maven - > ant - > jsmoothgen:如何提供-Djava.awt.headless = true?

Tho*_*sen 1 ant headless maven jsmooth

我有一个情况,我们用JSmooth包装一个jar来获得一个合适的exe文件.

传统上这是由ant构建的,并且作为我们一般的mavenification的一部分,当前的短期解决方案是使用maven-antrun-plugin来设置属性并调用ant.

不幸的是,这种方法在Unix上构建时失败(因为没有可用的X11显示)并且解决方案是调用JVM -Djava.awt.headless=true.我想在我的pom.xml中执行此操作,但无法确定在何处执行此操作.

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <phase>package</phase>
            <configuration>
                <target>
                    <!-- create one-jar and exefy it -->
                    <property name="maven.project.build.finalName" value="${project.build.finalName}" />
                    <!-- note: fails on headless Linux for now -->
                    <ant />
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

可以直接分叉新的JVM,但不要依赖平台细节.

我该怎么做才能正确?

Jea*_*evy 5

据我所知,没有分支JVM的解决方案是使用MAVEN_OPT

export MAVEN_OPTS="-Djava.awt.headless=true"
Run Code Online (Sandbox Code Playgroud)

由于-D是JVM选项,因此您必须直接将其指定为maven.你不能(再一次,从我所知道的)传递它作为内部参数(并且没有任何允许它的配置选项)

因此,使用MAVEN_OPT参数成为正确的方法.

编辑1:

你可以使用better-maven2-antrun-plugin在这里浏览一下

http://code.google.com/p/better-maven2-antrun-plugin/wiki/Usage

编辑2: 可以帮助maven-antrun开发,为他们提供一种指定这些参数的方法,比如 maven-compiler-plugin.如果您真的想使用pom信息,这将是最好的方法.