【问题标题】:How can I use Maven project properties in izpack-maven-plugin install.xml?如何在 izpack-maven-plugin install.xml 中使用 Maven 项目属性?
【发布时间】:2011-02-26 11:00:39
【问题描述】:

http://maksim.sorokin.dk/it/2010/06/10/izpack-with-maven/ 之后,我编写了一个 Maven POM,它使用 izpack-maven-plugin 创建了一个 IzPack 安装程序。

但是我现在找到了将插件配置参数(例如工件名称和版本)传递给 install.xml 文件的方法。有没有办法将这些值从 POM 传递到插件?

例子:

在 src/main/resources/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>
...

【问题讨论】:

    标签: java maven izpack


    【解决方案1】:

    我知道这个问题真的很老,但是当我试图弄清楚如何让 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>
    ...
    

    安装.xml:

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

    IzPack Properties documentation

    【讨论】:

      【解决方案2】:

      您的 maven-resources-plugin 调用可以使用 pom 本身中定义的项目属性过滤所涉及的资源,或者更好地使用属性文件。 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”属性具有“world”值。

      如果在 src/main/resources 中指定属性文件:

      your.name=world
      

      然后在 pom 的 元素中指明文件名。

      【讨论】:

      • 太好了,感谢您的快速回答! (将过滤设置为 true 是我必须为 POM 属性替换做的所有事情)
      • @mjn 欢迎您;我忘了告诉以这种方式激活过滤,所有资源都将被过滤,如果您的资源文件夹中有二进制文件,可能会发生令人讨厌的事情。你最好他们(或只你想被过滤的资源)
      猜你喜欢
      • 1970-01-01
      • 2015-03-19
      • 2019-01-27
      • 2018-05-06
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 2012-02-18
      • 2016-02-16
      相关资源
      最近更新 更多