我是Maven的新手。如果这是一个愚蠢的问题,我很抱歉。我有一个Maven Eclipse项目和一个使用阴影插件创建可运行jar的pom文件。我的计划是在版本中包含一个的几个属性文件(如果我的术语不正确,请纠正我的错误,我真的很绿)。我有多个位于src/main/resources中的属性文件。对运行Jars使用不同的属性文件,Maven Eclipse
我想找到一种方法来在可运行jar中仅包含适用的属性文件。具体来说,我在我的项目中有两个属性文件(config1.properties,config2.properties),每个构建将只使用这些文件中的一个,具体取决于生成的jar的所需功能。属性文件将被重新分配一个通用名称,特别是“defaultconfig.properties”,以便它与代码很好地配合。
生成的jar文件(针对每个不同属性文件的不同文件)将作为单独的cron作业运行。我想我将使用不同的Jenkins项目来根据属性文件为项目配置什么任务(我认为我已获得此部分)来将可运行jar部署到特定服务器。 cron作业将在这些服务器上运行。
我的问题是:
1)哪里的逻辑去确定哪些属性文件在运行的JAR中包括什么?例如,假设我有config1.properties(指定使用var1 = blah和var2 = blip和var3 = boink)和config2.properties(它指定使用var1 = duh var2 = dip和var3 = doink) 。 我在哪里告诉Maven这两个文件中的哪一个用于特定构建?
2)我是否应该传入一个参数,告诉Maven要使用哪个属性文件?如果是这样,我也要传递这个参数?这是可以在Jenkins项目中配置的东西吗? (即使只是一些基本的阅读能帮助我,因为我不确定这是一个maven问题还是jenkins问题,我都是绿色的。)
这是我的pom.xml的相关部分文件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.foo.dashboard.bar.Runner</mainClass>
</transformer>
</transformers>
<finalName>FooBar</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我一直在使用IncludeResourceTransformer重命名的属性文件,并试图,但不知道如何包括基于所需的jar文件的功能切换属性文件的逻辑。
谢谢。
你在找这样的事吗? http://rajendra.wordpress.com/2012/02/22/maven-filtering-resources-conditionally-while-packaging/ – DevZer0
我想你需要的是* *的配置文件:您可以定义其中几个,他们每个人都可以定义相同的属性但具有不同的值。然后,您可以使用该属性来指定您必须在当前版本中包含哪些属性文件。 – rlegendi
@ DevZer0 - 这似乎回答了我正在寻找的部分内容,即提供了一种方法来自定义在构建过程中使用的属性文件。真棒。一些跟进问题。我注意到资源标签是一个布尔值。如果有两种以上的配置选择会怎样?鉴于这确实提供了一种在配置之间切换的方式,在生成jar文件时如何指定值? –