小小的卡在这里。我有一个有3个配置文件的pom。 Theese个人资料有不同的版本名称。我想在构建特定的配置文件时将该版本名称注入属性文件中。
我的个人资料:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<projectVersion>DEV</projectVersion>
</properties>
</profile>
<profile>
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<projectVersion>1.0.0-RC1</projectVersion>
</properties>
</profile>
<profile>
<id>prod</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<projectVersion>1.0.0-Final</projectVersion>
</properties>
</profile>
</profiles>
和filter.properties如下所示:
projectName = defaultName
versionName = defaultVersion
怎么做?我按命令建立项目:
mvn clean install -D profile_name
答案 0 :(得分:7)
您需要做的是在POM文件的<build>
部分添加新部分。
像这样:
<build>
<resources>
<resource>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
这将查看指定文件src/main/resources
上的指定文件夹(**/*.properties
),并在遇到定义的变量时更改文件。
因此,为了完成这项工作,您的属性文件必须是这样的:
projectName = ${defaultName}
versionName = ${defaultVersion}
请注意这些变量名称。 Maven将使用您定义的名称替换它,或者像$ {projectVersion}的Maven结构的名称将替换为您的pom文件的<version>1.0</version>
标记。
所以不要使用:
<properties>
<projectVersion>1.0.0-Final</projectVersion>
</properties>
将此变量的名称(和版本)更改为:
<properties>
<defaultVersion>1.0.0-Final</defaultVersion>
<defaultName>someName</defaultName>
</properties>
在您的所有个人资料上。
只需运行你的maven命令:
mvn install -Pprofilename
答案 1 :(得分:5)
小心显示的配置文件。默认情况下它们都是活动的,这是一个问题,因为它们都定义了相同的maven属性。相反,您应该默认只将其中一个标记为活动。
您也不会显示<resources>
过滤来处理filter.properties
,因此这也是一个错误。
最后,你在maven配置文件中控制工件版本。我不认为这是个好主意。请阅读maven-release-plugin。