Java 定制maven可部署(war,删除一些依赖项)
我用maven构建了一个多模块的web应用程序。我们按照常规构建war,并使用tomcat在开发人员机器和本地测试服务器上部署和运行 然后,我们希望将应用程序部署到云中。为此,我们创建了一个特殊版本的tomcat,其中预装了所有库,以及一个特殊版本的war,其中只有我们的代码。这里的要点是tomcat被预加载到云服务器上,每次更改都会上传war。目前,我们必须手动从构建的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最好的方法是什么?我应该构建一个自定义的打包类型,或者运行一些构建后插件来删除这些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
...
在配置文件中指定此插件,使其仅用于生产。是的,谢谢,这太完美了。我可以过滤掉/过滤掉依赖项。这就是我所做的。