- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Javac 提供以下非标准选项(来自“javac -X”命令行帮助):
-Xplugin:"name args" Name and optional arguments for a plug-in to be run
但是,Maven 不处理该格式。例如,以下内容不起作用:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-Xplugin:"Manifold static"</arg>
</compilerArgs>
</configuration>
</plugin>
我尝试了几种不同的变体,并尝试用“=”替换空格,但仍然没有结果。有解决方法吗?
请注意,我使用的是 Manifold带有 Java 8 的 javac 插件。复制很简单。创建一个依赖于 manifold-all jar 的 pom:
<dependency>
<groupId>systems.manifold</groupId>
<artifactId>manifold-all</artifactId>
<version>0.9-alpha</version>
</dependency>
你真的不需要任何源代码,这只是为了证明 Maven 不会接受 -Xplugin:"Manifold static"
javac 参数。
另请注意,Java 9 似乎已将 -Xplugin
的格式更改为不再需要引号。查看Java 9 docs对此。
最佳答案
鉴于此讨论:MCOMPILER-178这个补丁:pull request ,并且由于空格似乎不是 XML 名称中允许的字符,我怀疑您必须删除所有双引号,并保留所有空格。
这里是:
myOption=foo"bar"baz
是 bash
(或您使用的任何 shell)中的字符串连接。它将字符串“foobarbaz”存储在变量 myOption
中。如果你在 bash
的选项中使用双引号,那么它只是意味着:“bash,请将引号之间的整个内容视为单个参数,不要将其拆分为字符串参数数组”。例如,如果您运行以下命令脚本:
#!/bin/bash
echo $1
echo $2
echo $3
使用这些参数:
$ ./testArgs.sh hello -World:"blah blah blah" foobar
你会得到这样的输出:
hello
-World:blah blah blah
foobar
-World:blah blah blah
部分是单个字符串,不保留引号。
Maven 不是 bash。 POM是一个XML文件,它有标签,有些标签是用文本填充的。 XML 不关心 bash 的字符串连接或参数解析语法。如果我对上面的讨论理解正确的话,他们将 xml 标签的内容直接传递给了编译器,没有任何修改。
因此,我最好的猜测是去掉双引号:
<arg>-Xplugin:MyPlugin myArg</arg>
如果这没有帮助,那么我完全误解了上面链接的讨论,或者您可能使用的是工作方式不同的 Maven 版本。
关于java - Maven:如何使用 maven-compiler-plugin 指定 Javac 插件参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48715546/
我的问题是关于基本的java命令之一“javac”。我的桌面上有一个“.java”文件。我已经安装了 JDK 7 并将路径变量添加到环境变量中。这是“环境变量”的屏幕截图。 http://s13.po
我制作了我的 gitrepository 并提交了它。 插入了一个 java 文件并想编译它,但它给了我这个: Bernard@BERNARD-PC /c/users/bernard/desktop/
运行Maven时,得到以下输出: [WARNING] Unable to autodetect 'javac' path, using 'javac' from the environment. 我该
我有一个导入一些 servlet 库的类。当我从命令行编译它时它很好。 当我使用 ant compile 任务编译它时,它给出了在其路径中找不到 servlet 库的错误。 这是已知/常见的情况吗?
我试图在 maven-compiler-plugin 中指定另一个版本的 JDK .当-target和 -source参数设置为1.5,一切正常。但是当我尝试使用 1.6 JDK 时,maven 会报
我们的软件之前附带 OpenJDK JRE,但现在我们将附带 Oracle JRE。 之前我们使用 OpenJDK javac 编译器进行编译。我认为现在我们应该使用 Oracle javac 编译器
在大多数现代 IDE 中,您可以设置一个参数来确保 javac 获得足够的堆内存来进行编译。由于不值得在这里讨论的原因,我们暂时与 JBuilder 2005/2006 联系在一起,而且源代码的数量似
我在桌面上的 Notepad++ 中保存了一个名为“first.java”的文件。当我运行 cmd 命令“javac first.java”时,它给了我这个错误。 javac: file not fo
更新: See resolution here. 感谢大家的帮助! 我在尝试使用 Ant 编译项目时遇到错误,它声称“[javac] javac:无效目标版本:7”并导致构建失败。 我在 Mac OS
当我尝试在我的 gwt-maven Projekt 上进行 maven-install 时,我得到了这个错误: [ERROR] Failed to execute goal org.apache.ma
使用 maven 编译时出现编译错误。 [ERROR] COMPILATION ERROR : [INFO] ---------------------------------------------
我正在查看一些内部 javac sun 编译器 API 源代码,并在 Types 类中发现了这一点: public Boolean visitTypeVar(TypeVar var1, Type va
我正在尝试运行 java 应用程序,但出现以下错误, Unable to find a javac compiler; com.sun.tools.javac.Main is not on the c
我有这个类,它是我在从 Java 6 移植到 Java 8 的项目中找到的一些代码的简化: public class Unification { final class Box {}
首先,我要感谢你,并明确地说,我已经在这个问题上苦苦思索了好几天,并在其他类似线程中寻找解决方案,但没有成功。 我们的应用程序负责生成 java 类,其中一些可能在类名(因此文件名)中包含特殊字符,例
以下代码创建了一个Collector,它产生了一个UnmodifiableSortedSet: package com.stackoverflow; import java.util.Collecti
当我用 Maven 编译我的类时遇到问题。堆栈跟踪如下所示: [ERROR] Failure executing javac, but could not parse the error: [ERRO
这个问题在这里已经有了答案: Why Java compiler as distributed as executable and not as JVM bytecode? (1 个回答) 关闭 7
我有一些用 javac 1.8.0_92 编译的代码: public final class Either { // ... private final L l; privat
这个问题在这里已经有了答案: Lombok's access to jdk.compiler's internal packages incompatible with Java-16 (3 个回答)
我是一名优秀的程序员,十分优秀!