如何向 antrun 插件传递新的环境变量?

发布于 2024-11-28 15:52:25 字数 1510 浏览 5 评论 0原文

我使用 maven-antrun-plugin 和 install4j 来为我的应用程序构建安装程序。如果 java 不在(系统)路径上,则它不起作用。由于它分叉了一个新的 java 进程来运行该任务,因此必须有一种方法可以传递它的环境变量,但我无法弄清楚。

Install4J将使用EXE4J_JAVA_HOME来选择java安装。我想通过 antrun-plugin 将其传递给 ant。我可以想到一些黑客的方法来做到这一点,但一定有一些简单的事情我忽略了。作为参考,这是我的 antrun 配置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>

    <executions>
        <execution>
            <phase>package</phase>

            <goals>
                <goal>run</goal>
            </goals>

            <configuration>
                <target>
                    <!--suppress MavenModelInspection -->
                    <taskdef name="install4j" classname="com.install4j.Install4JTask"
                        classpath="${install4j.ant.path}"/>

                    <install4j projectfile="itma-assembly-client-swing.install4j" buildids="62">
                        <variable name="verbose.version.number" value="${verbose-version-number}"/>
                        <variable name="media.file.prefix" value="${media-file-prefix}"/>
                        <variable name="main.class" value="${itma-client-swing-bootstrap-main-class}"/>
                    </install4j>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin> 

I'm using the maven-antrun-plugin with install4j to build installers for my application. It doesn't work if java is not on the (system) path. Since it's forking a new java process to run the task, there must be a way I can pass it environment variables, but I can't figure it out.

Install4J will use EXE4J_JAVA_HOME to select a java installation. I want to pass that to ant via the antrun-plugin. I can think of a few hackish ways of doing it, but there's got to be something simple I'm overlooking. For reference, here is my antrun config:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>

    <executions>
        <execution>
            <phase>package</phase>

            <goals>
                <goal>run</goal>
            </goals>

            <configuration>
                <target>
                    <!--suppress MavenModelInspection -->
                    <taskdef name="install4j" classname="com.install4j.Install4JTask"
                        classpath="${install4j.ant.path}"/>

                    <install4j projectfile="itma-assembly-client-swing.install4j" buildids="62">
                        <variable name="verbose.version.number" value="${verbose-version-number}"/>
                        <variable name="media.file.prefix" value="${media-file-prefix}"/>
                        <variable name="main.class" value="${itma-client-swing-bootstrap-main-class}"/>
                    </install4j>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin> 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉月流沐 2024-12-05 15:52:25

有趣的问题...我对此做了一些研究,发现 Ant 的 property-Task 听起来很有希望,但它只允许对环境变量进行读取访问。这些来源位于 jgurucoderanch 声称 是唯一的方法从 Ant 内部传递环境变量。
这不是最好的方法,但也许您可以从命令行(又名通过 exec)执行 com.install4j.Install4JTask - 也许这是您的黑客方法之一......:-)

Interesting question ... I did some research on it and found the property-Task for Ant which did sound promising first but it allows only read-access on environment variables. These sources on jguru and coderanch claim that an is the only way to pass environment variables from inside Ant.
It's not the nicest way but perhaps you can exec the com.install4j.Install4JTask from the command-line aka via exec - perhaps that's one of your hackish ways ... :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文