我有一个模块应该产生两个工件(战争)。两个WAR之间的唯一区别是正在使用的web.xml 我是在Maven Profiles的帮助下做到的......
<parent>
<artifactId>com</artifactId>
<groupId>myProj</groupId>
<version>1.0</version>
</parent>
<groupId>myProj.module1</groupId>
<artifactId>module1</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<profiles>
<profile>
<id>module1</id>
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>module1</warName>
<webXml>src\main\webapp\WEB-INF\web_module1.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>module2</id>
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>module2</warName>
<webXml>src\main\webapp\WEB-INF\web_module2.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Q1:如何从超级POM调用此POM,以便激活两个配置文件? Q2:是否可以在本地存储库中安装生成的工件?
谢谢!
答案 0 :(得分:2)
如果您想要activate several profiles at the same time,只需运行mvn ... -Pprofile1,profile2
命令。
但是,在您的情况下,这是针对一个主要的Maven约定,该约定指出one project = one artifact
。这意味着您无法同时创建2个WAR。如果激活两个配置文件,maven-war-plugin
的一个配置将被第二个配置文件覆盖,然后,最终将获得1个WAR,其中包含一个web.xml。
如果你想获得2个WAR,解决方案是使用WAR overlay(即第二个战争是依赖战争#1的另一个项目),或者运行两个单独的Maven命令,每个配置文件一个。