我在我的pom.xml文件中有三个配置文件...
- dev(用于开发者环境)
- qa(用于我们内部QA服务器)
- prod (用于生产环境)。
当我们运行maven构建时,这三个配置文件都会输出相同名称的war文件。我希望输出 $profilename-somearbitraryname.war
有什么想法吗?
您已经正确回答了自己的问题:
<profiles>
<profile>
<id>dev</id>
<properties>
<rp.build.warname>dev</rp.build.warname>
</properties>
</profile>
<profile>
<id>qa</id>
<properties>
<rp.build.warname>qa</rp.build.warname>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<rp.build.warname>prod</rp.build.warname>
</properties>
</profile>
</profiles>
但是有一种更简单的方法来重新定义WAR文件的名称:
<build>
<finalName>${rp.build.warname}-somearbitraryname</finalName>
<!-- ... -->
</build>
不需要 maven-war-plugin
插件。
答案很简单...
在每个配置文件中定义一个如下的属性...
<profile>
<id>qa</id>
<properties>
<rp.build.warname>ourapp-qa</rp.build.warname>
</properties>
</profile>
然后将这个添加到你的插件中...
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<packagingExcludes>WEB-INF/web.xml</packagingExcludes>
<warName>${rp.build.warname}</warName>
</configuration>
</plugin>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
[...]
<modules>
<ejbModule>
<groupId>artifactGroupId</groupId>
<artifactId>artifactId</artifactId>
<bundleFileName>anotherName-1.2.3.jar</bundleFileName>
</ejbModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
org.springframework.context.support.PropertySourcesPlaceholderConfigurer
)来处理应用程序在不同环境下变化的变量。这样,您可以构建一次并在下一个环境中重新部署它。虽然这可能与您的情况无关。 - worldsayshi