Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 定制maven可部署(war,删除一些依赖项)_Java_Maven_Deployment_Maven 2 - Fatal编程技术网

Java 定制maven可部署(war,删除一些依赖项)

Java 定制maven可部署(war,删除一些依赖项),java,maven,deployment,maven-2,Java,Maven,Deployment,Maven 2,我用maven构建了一个多模块的web应用程序。我们按照常规构建war,并使用tomcat在开发人员机器和本地测试服务器上部署和运行 然后,我们希望将应用程序部署到云中。为此,我们创建了一个特殊版本的tomcat,其中预装了所有库,以及一个特殊版本的war,其中只有我们的代码。这里的要点是tomcat被预加载到云服务器上,每次更改都会上传war。目前,我们必须手动从构建的war中删除依赖项 maven最好的方法是什么?我应该构建一个自定义的打包类型,或者运行一些构建后插件来删除这些WAR吗?还是

我用maven构建了一个多模块的web应用程序。我们按照常规构建war,并使用tomcat在开发人员机器和本地测试服务器上部署和运行

然后,我们希望将应用程序部署到云中。为此,我们创建了一个特殊版本的tomcat,其中预装了所有库,以及一个特殊版本的war,其中只有我们的代码。这里的要点是tomcat被预加载到云服务器上,每次更改都会上传war。目前,我们必须手动从构建的war中删除依赖项


maven最好的方法是什么?我应该构建一个自定义的打包类型,或者运行一些构建后插件来删除这些WAR吗?还是别的什么?我认为激活这个定制版本的最好方法是通过配置文件。我在新的配置文件中将它们设置为
scope=provided
,尝试删除这些依赖项,但可传递的依赖项仍然进入了战争。

您可以在maven中使用配置文件来实现。正如你所说,它不工作,我可以认为你配置的东西错了。尝试以下方法:

 <profiles>
    <profile>
      <id>dev</id>
      <activation>
        <!-- active by default, turn off when on prod -->
        <activeByDefault>true</activeByDefault>
      </activation>
      <dependencies>
        <!-- include this in dev, not in prod -->
        <dependency>
          <groupId>com.company</groupId>
          <artifactId>xyz</artifactId>
        </dependency>
      </dependencies>
    </profile>
  </profiles>

发展
真的
com公司
xyz
然后在命令行中,
mvn包-p!dev
停用
dev
配置文件,以便不包括jar

确保
com.company:xzy
未包含在

中。如果要排除所有依赖项,可以使用war插件的
packagingExcludes
执行此操作:

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
            ...
        </configuration>
    </plugin>

maven战争插件
2.2
WEB-INF/lib/*.jar
...

在配置文件中指定此插件,使其仅用于生产。

是的,谢谢,这太完美了。我可以过滤掉/过滤掉依赖项。这就是我所做的。