Maven 如何在安装阶段从pom设置环境变量

Maven 如何在安装阶段从pom设置环境变量,maven,javafx,wix,environment-variables,pom.xml,Maven,Javafx,Wix,Environment Variables,Pom.xml,我正在用WIX工具集和maven一起制作一个安装程序。我的Wix confg文件“WXS”需要当前项目目录路径。基本上,javafx打包工具将WXS文件放入一个临时文件夹,然后制作安装程序,所以我需要给出项目目录的路径。我不能静态地定义。所以我需要指定项目目录的绝对路径。Maven的${project.builddir}具有以下路径。所以我需要在环境变量中设置这个路径,以便WIX可以使用它 谁能告诉我在安装阶段如何设置环境变量。而且它应该只在windows上运行构建时设置。因为我的maven构建

我正在用WIX工具集和maven一起制作一个安装程序。我的Wix confg文件“WXS”需要当前项目目录路径。基本上,javafx打包工具将WXS文件放入一个临时文件夹,然后制作安装程序,所以我需要给出项目目录的路径。我不能静态地定义。所以我需要指定项目目录的绝对路径。Maven的${project.builddir}具有以下路径。所以我需要在环境变量中设置这个路径,以便WIX可以使用它

谁能告诉我在安装阶段如何设置环境变量。而且它应该只在windows上运行构建时设置。因为我的maven构建运行了3次。一个用于windows,一个用于mac,一个用于Linux O.S.以创建各自的安装程序。因此,如果它在windows上运行,那么在安装阶段它应该设置环境变量,然后我的安装程序插件maven ant plugin应该运行

我只需要知道POM中环境变量的设置,它应该只有在windows中运行构建时才起作用

编辑

POM零件调用fx包装商,该包装商调用candel

创建部署包
安装
跑

您可以在settings.xml中查看生成配置文件

<profiles>
  <profile>
   <id>dev-profile</id>
  <properties>
  <yourVariable.home>C:/tools/wix....</yourVariable.home>
    ...
  </properties>
  </profile>
  </profiles>

开发人员配置文件
C:/tools/wix。。。。
...
maven goal with-Pdev profile和pom${yourVariable.home}


事实上,如果您需要三个不同的变量用于不同的构建环境,您可以根据需要在settings.xml中创建大量概要文件

您可以使用Maven资源插件在*.wxs文件上启用筛选,以便您可以在WiX项目中直接使用Maven属性

POM文件中的插件条目示例:

<plugin>
    <!-- copy resources -->
    <artifactId>maven-resources-plugin</artifactId>
    <groupId>org.apache.maven.plugins</groupId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>installer</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.basedir}/package/windows</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*.wxs</include>
                        </includes>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

在POM文件中(我不知道您实际上是如何调用candle/light),您可以使用build目录作为变量,在WXS文件中,您可以将
env.RPAS\u JAVA
更改为
var.RPAS\u JAVA
。这有效地完成了同样的事情,但我喜欢过滤方法,因为它意味着我的命令行几乎不需要更改。

是的,我喜欢这种方法,它适合我在操作系统基础上过滤插件。但我仍然需要找到一种从POM添加环境变量的方法。但是正如您提到的yourVariable.home,它在WXS文件中不起作用。WXS文件未选取此属性:(我的WXS文件在同一个项目中。请看我更新的问题哦,如果我将WXS文件放在项目资源中,并指示copy plugin将WXS文件从项目资源复制到projectbaseDir/package/windows,然后它会复制并过滤WXS文件中定义的属性?对吗?你能用这个场景更新你的ans吗?我已经用yo更新了我的答案。)你的目录。如果你照原样复制它,它应该对你有用。我将使用你描述的第一种方法。实际上我没有调用Candel。它是由Javafx packger实用程序和Ant task call Javafx packager调用的。所以基本上,给出命令行参数不在我手中。请看POM文件中定义Ant task I的特定部分n maven。oracle正式给出了这种方法。如果${project.basedir}/package/windows中已经存在WXS文件,那么下次运行构建过程时是否会替换它??
<plugin>
    <!-- copy resources -->
    <artifactId>maven-resources-plugin</artifactId>
    <groupId>org.apache.maven.plugins</groupId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>installer</id>
            <phase>package</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.basedir}/package/windows</outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/resources</directory>
                        <includes>
                            <include>**/*.wxs</include>
                        </includes>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
<Property Id="MYPROJECTROOTPATH" Value="${project.builddir}"/>
<Property Id="MYPROJECTROOTPATH" Value="C:\your\project\dir\target"/>
`candle -dRPAS_JAVA=${project.builddir} ...`