我是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文件時如何指定值? –