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,但不要依赖平台细节.
我该怎么做才能正确?
据我所知,没有分支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信息,这将是最好的方法.