2015-04-29 110 views
4

我想打包兩個或更多非常相似的分佈,唯一的區別是將在這些分佈內的數據集的路徑。Maven組件描述符屬性

鑑於這個例子路徑:$ {} project.basedir/SRC /配置/數據集1

<?xml version="1.0" encoding="UTF-8"?> 
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> 

    <id>dataset1</id> 
    <formats> 
     <format>zip</format> 
    </formats> 

    <fileSets> 
     <fileSet> 
      <directory>${project.basedir}/src/config/dataset1/aaa</directory> 
      <outputDirectory>conf/aaa</outputDirectory> 
     </fileSet> 
     <fileSet> 
      <directory>${project.basedir}/src/config/dataset1/bbb</directory> 
      <outputDirectory>conf/bbb</outputDirectory> 
     </fileSet> 
    </fileSets> 

    <!-- MANY MORE FILESETS... --> 

</assembly> 

現在正是我想要爲不同的數據集相同的裝配描述符,例如:$ { project.basedir}/src/config/dataset2

當然,我可以創建兩個裝配描述符。但是,我必須記住在需要時更改多個位置,或者在添加另外兩個數據集時更糟糕。

有沒有辦法解決這個問題,比如創建多個執行並將屬性傳遞給它?或者更好的東西?

編輯: 這個願望項目將解決一切: https://jira.codehaus.org/browse/MASSEMBLY-445

回答

3

是的,你可以使用屬性這一點。

  1. 爲在pom.xml之間執行不同的零件創建屬性(使用默認值)。例如:
<properties> 
    <dataset.dir>config/dataset</dataset.dir> 
</properties> 
  • 使用他們在您的裝配描述符,就像任何其他財產(如${project.basedir}

  • 對於不同的執行你可以:

    • 使用幾個構建配置文件(Maven profiles)其中覆蓋屬性值;

    • ,或者直接將值作爲一個MVN調用的參數(如mvn package -Dprop=val

  • 另外,如果你想在其他任何地方使用這些屬性,你可以通過任何佔位符填充它們通過使用其他Maven插件配置(例如,maven-resource-plugin)。

    +0

    我知道這種可能性,但那不是我正在尋找的。配置文件是一種可憐的解決方案,我仍然希望有更好的東西.. – vehovmar

    +0

    你可以將任何屬性傳遞給maven像'mvn install -Dproperty = value',但我仍然認爲在一個地方聲明所有可能的屬性值) 更好。 – arghtype

    +0

    不要誤解我的意思,在pom中聲明屬性是非常好的。使用配置文件創建不同的分發版本比解決方案更復雜,而且我濫用配置文件。 – vehovmar

    相關問題