gpt4 book ai didi

java - 如何在不破坏 Maven 发布插件的情况下传递 javac 多个命令行参数,其中一些参数包括冒号?

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:27 24 4
gpt4 key购买 nike

当我忘记在 Serializable 类中声明 serialVersionUID 时,我想让我的 Maven 构建失败。使用 javac,这很容易:

$ javac -Xlint:serial -Werror Source.java

直接将其转换为 Maven 是行不通的:

        <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<compilerArgument>-Xlint:serial -Werror</compilerArgument>
</configuration>
</plugin>

compilerArgument 被引用,所以 javac 只接收一个参数,包含 -Xlint:serial -Werror,而不是 - Xlint:serial-Werror 作为单独的参数。因此,您阅读了文档,并找到了 compilerArguments:

        <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<compilerArguments>
<Xlint:serial />
<Werror />
</compilerArguments>
</configuration>
</plugin>

这看起来很奇怪 - 冒号在 Xlint 命名空间中生成 serial 元素,它没有在任何地方声明 - 但它有效......直到你想做一个发布:

$ mvn release:prepare

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project my-project: Error reading POM: Error on line 58: The prefix "Xlint" for element "Xlint:serial" is not bound.

显然,常规 POM 阅读器处理 XML 命名空间的方式与发布插件使用的方式不同。

那么,当其中一些开关包含对纯 XML 元素无效的字符时,我该如何传递 javac 多个命令行开关,而不破坏发布插件?

最佳答案

参见 http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerArgs

http://maven.apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html

Maven 3.1 或更高版本

                        <source>1.6</source>
<target>1.6</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
</processors>
<compilerArgs>
<arg>-verbose</arg>
<arg>-Aeclipselink.persistencexml=src/main/resources/META-INF/persistence.xml</arg>
</compilerArgs>

或 Maven 3.0 或更早版本

      <compilerArguments>
<verbose />
</compilerArguments>
<compilerArgument>-Aeclipselink.persistencexml=src/main/resources/META-INF/persistence.xml</compilerArgument>

关于java - 如何在不破坏 Maven 发布插件的情况下传递 javac 多个命令行参数,其中一些参数包括冒号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com