我在这里遇到一个非常荒谬的问题我有一个pom.xml
用于构建war文件。我已经引入profile
来处理不同的环境(dev/prod)
。但是问题是,当我创建构建时,它会为pom.xml
请在这里帮助解决问题。
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<activation>
<property>
<name>lifecycle</name>
<value>prod</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warSourceExcludes>**login.jsp</warSourceExcludes>
</configuration>
</plugin>
</plugins>
<directory>target/${lifecycle}</directory>
<finalName>testapp</finalName>
<resources>
<resource>
<directory>src/main/resources/${lifecycle}</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<activation>
<property>
<name>lifecycle</name>
<value>dev</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
</plugin>
</plugins>
<directory>target/${lifecycle}</directory>
<finalName>testapp</finalName>
<resources>
<resource>
<directory>src/main/resources/${lifecycle}</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
正确的构建目录应该是
如果 -Dlifecycle = dev
target/dev/testapp/
如果 -Dlifecycle = prod
target/prod/testapp/
但在这里我得到'target / testapp-xx.x'
为什么这种行为不同?
触发构建的命令: mvn clean install -Dlifecycle=prod
答案 0 :(得分:2)
在prod配置文件中添加id元素可解决此问题。
答案 1 :(得分:1)
您可以做的一件事是指定应该构建哪个配置文件。
为每个配置文件定义ID:
<profiles>
<profile>
<id>dev</id>
...
<profile>
构建时,使用参数 -P 通知maven激活哪些配置文件
mvn clean install -P dev