2011-02-26 88 views
0

正在關注http://maksim.sorokin.dk/it/2010/06/10/izpack-with-maven/我寫了一個Maven POM,它使用izpack-maven-plugin創建了一個IzPack安裝程序。如何在izpack-maven-plugin install.xml中使用Maven項目屬性?

但是我現在發現了將插件配置參數(如工件名稱和版本)傳遞給install.xml文件的方法。有沒有辦法將這些值從POM傳遞給插件?

例子:

在src /主/資源/ INSTALL.XML:

<installation version="1.0"> 
<info> 
    <appname>MyApp</appname> 
    <appversion>1.0.0</appversion> 
</info> 
... 

我如何在這裏使用Maven的性質,project.name和project.version,所以它看起來像:

<installation version="1.0"> 
<info> 
    <appname>${project.name}</appname> 
    <appversion>${project.version}</appversion> 
</info> 
... 

回答

1

Maven的資源,插件調用可以過濾涉及的資源使用的聚甲醛本身定義的項目屬性,或更好的使用屬性文件。 maven-resources-plugin usage

<build> 
... 
    <filters> 
    <filter> [a filter property or properties file] </filter> 
    </filters> 
... 
    <plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.4.2</version> 
    ... 
      <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
      </resources> 
    ... 
    </plugin> 
</build> 

的過濾器屬性的語法如下的POM:

<properties> 
    <your.name>world</your.name> 
</properties> 

意爲 「your.name」 酒店有 「世界」 的價值。

如果指定屬性文件中的src/main /資源:

your.name=world 

,然後表示在POM的<過濾>元素的文件名。

+0

太好了,謝謝您的快速答覆! (設置過濾爲真是我所要做的POM房產替代) – mjn 2011-02-26 11:44:01

+0

@mjn歡迎您;我忘了說這樣激活過濾,所有的資源都會被過濾掉,如果你的資源文件夾中有二進制文件,會發生令人討厭的事情。你最好他們(或只有你想過濾的資源) – 2011-02-26 11:47:25

2

我知道這個問題確實很舊,但是這始終是我在試圖弄清楚如何讓IzPack中的appversion自動從POM項目版本中提取時出現在搜索中的問題。

正確的做法是在您的POM中設置Maven屬性,並使用@ {property}語法引用IzPack install.xml中的屬性。不需要過濾資源。

的pom.xml:

... 
<properties> 
    <myproduct.name>${project.name}</myproduct.name> 
    <myproduct.version>${project.version}</myproduct.version> 
</properties> 
... 

INSTALL.XML:

... 
<info> 
    <appname>@{myproduct.name}</appname> 
    <appversion>@{myproduct.version}</appversion> 
... 

IzPack Properties documentation

相關問題