W希望我的maven项目能够一次生成具有不同分类器的三个工件。我知道我可以用模块生产它。这实际上是一个资源项目,我想为DEV,STAGE和PROD环境生成配置。立即用不同的分类器构建多个工件
我想要的是运行mvn:install
一次,并在我的回购中有my.group:resources:1.0:dev
,my.group:resources:1.0:stage
和my.group:resources:1.0:prod
。
W希望我的maven项目能够一次生成具有不同分类器的三个工件。我知道我可以用模块生产它。这实际上是一个资源项目,我想为DEV,STAGE和PROD环境生成配置。立即用不同的分类器构建多个工件
我想要的是运行mvn:install
一次,并在我的回购中有my.group:resources:1.0:dev
,my.group:resources:1.0:stage
和my.group:resources:1.0:prod
。
如果您指定多个插件执行和resource filtering,则可以在没有配置文件的情况下完成此操作。
为${basedir}/src/main/filters
(例如prod.properties,dev.properties)中的每个版本创建一个属性文件,该文件为每个环境保留适当的值。
打开过滤你的资源:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
现在添加资源插件执行。请注意不同的过滤器文件和输出目录。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>default-resources</id>
<phase>process-resources</phase>
<goals>
<goal>resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}/dev</outputDirectory>
<filters>
<filter>${basedir}/src/main/filters/dev.properties</filter>
</filters>
</configuration>
</execution>
<execution>
<id>prod</id>
<phase>process-resources</phase>
<goals>
<goal>resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.outputDirectory}/prod</outputDirectory>
<filters>
<filter>${basedir}/src/main/filters/prod.properties</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
最后,jar插件;注意分类和输入目录:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>dev</classifier>
<classesDirectory>${project.build.outputDirectory}/dev</classesDirectory>
</configuration>
</execution>
<execution>
<id>jar-prod</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>prod</classifier>
<classesDirectory>${project.build.outputDirectory}/prod</classesDirectory>
</configuration>
</execution>
</executions>
</plugin>
运行mvn clean install
应该dev
和prod
分类产生适当过滤资源工件,如你想要的。
在这个例子中,我为开发版本使用了default-resources
和default-jar
的执行ID。没有这个,你在构建时也会得到一个未分类的jar工件。
在包包含** prod.properties * *和** dev.properties **,如果我希望两个jar文件具有相同的属性,比如** config.properties ** ** –
@ChristianVielma,我该怎么办?您是否在询问在您的包含config.properties罐子或使用config.properties作为两个罐子的过滤器? – user944849
我的意思是如果我有一个config-dev.properties和一个config-prod.properties,我该怎么做才能在每个生成的jar中只有一个config.properties。我能解释一下自己吗? –
仅供参考 - 将版本号放在那里以确保您的版本支持自定义过滤器。在maven 3中,我例如像这样设置了我的。没有版本,它不起作用。
不是欺骗而是一个非常* *类似的情况:http://stackoverflow.com/questions/3866784/release-different-configurations-with-maven – chrisinmtown