繁体   English   中英

如何通过Maven将“-J”选项传递给javac?

[英]How to pass “-J” options to javac through Maven?

我有一个使用Maven构建的Java项目。 我想在“javac”命令行中添加选项 - 特别是,我想传递一些“-J”选项。

通常我会做这样的事情:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArgument>-J-Xdebug</compilerArgument>
        <compilerArgument>-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</compilerArgument>
    </configuration>
</plugin>

但是当我尝试这个时,我得到了表单的错误:

[ERROR] Failure executing javac,  but could not parse the error:
javac: invalid flag: -J-Xdebug
Usage: javac <options> <source files>
use -help for a list of possible options

经过仔细研究,似乎maven-compiler-plugin将所有编译器参数写入选项文件,并调用javac,如'javac @optionfile'。 根据javac的官方文档http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/javac.html

@argfiles列出选项和源文件的一个或多个文件。 这些文件中不允许使用-J选项。

所以看起来maven-compiler-plugin中的选项不起作用 - 它想要使用arg文件,arg文件不能包含我想要的选项。

我也看到了一些使用地图的建议 - 但是当我尝试它时,它有类似的结果。

还有其他选择吗?

编译器插件允许您指定jdk的位置 ,因此您可以使用以下内容:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
      <verbose>true</verbose>
      <fork>true</fork>
      <executable><!-- path-to-javac-invoking-script --></executable>
      <compilerVersion>1.3</compilerVersion>
    </configuration>
  </plugin>

并为它提供一个脚本/ bat文件的路径,该文件将所有参数传递给真正的javac以及你的额外参数?

编辑 - 原始问题已在编译器插件2.4+中修复,这应该只是现在没有我的解决方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM