- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试让 Maven 输出 lint 级别警告。我创建了一个小型测试程序,它应该生成关于从非静态上下文使用静态方法的警告,但是尽管有许多不同的插件配置选项,构建总是成功而没有任何警告!
谷歌搜索后,我发现了使用编译器插件的“compilerArgument(s)”属性的建议,但这似乎也不适合我。
这是我应该生成警告的示例程序:
package com.dahlgren;
/**
* Test space
*
*/
public class App {
public static void main( String[] args ) {
String foo = "foo";
// I want this to generate a compilation warning
System.out.println(foo.format("blah"));
}
}
这个程序应该发出警告,因为 javadoc对于 Java 6 String::format 表示仅存在此方法的静态版本。我想特别注意这种情况,因为它过去曾困扰过我,编译器应该检测到它:-)
这是我的 pom 文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dahlgren</groupId>
<artifactId>JavaScratchSpace</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>JavaScratchSpace</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArgument>-Xlint:all</compilerArgument>
<!--
<compilerArguments>
<Xlint:all />
</compilerArguments>
-->
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.dahlgren.App</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我已经尝试了两种形式的 compilerArgument(s) 属性,但均无济于事。
运行 mvn clean compile
产生以下输出:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building JavaScratchSpace 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ JavaScratchSpace ---
[INFO] Deleting file set: /work/fun/JavaScratchSpace/target (included: [**], excluded: [])
[INFO]
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ JavaScratchSpace ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /work/fun/JavaScratchSpace/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ JavaScratchSpace ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /work/fun/JavaScratchSpace/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.716s
[INFO] Finished at: Tue Mar 12 11:39:21 PDT 2013
[INFO] Final Memory: 8M/150M
[INFO] ------------------------------------------------------------------------
附加版本信息:
$ mvn --version && javac -version
Apache Maven 3.0.4
Maven home: /usr/share/maven
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.2.0-29-generic", arch: "amd64", family: "unix"
javac 1.6.0_24
最佳答案
这对您的来源“对我有用”。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.buck</groupId>
<artifactId>mavenproject3</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mavenproject3</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
</plugins>
</build>
</project>
我想你注释掉尝试的原因
<compilerArguments>
<Xlint:all />
</compilerArguments>
失败是因为“all”标签会落入 XML 命名空间“Xlint”,这意味着整个标签“Xlint:all”可能甚至没有被 maven 配置解析器看到(在不同的命名空间和所有)。
顺便说一下输出的相关行
Compiling 1 source file to C:\Users\edwbuck\Documents\NetBeansProjects\mavenproject3\target\classes
bootstrap class path not set in conjunction with -source 1.6
com/buck/mavenproject3/App.java:[12,35] static method should be qualified by type name, java.lang.String, instead of by an expression
和我的环境
Apache Maven 3.0.4 (r1232337; 2012-01-17 02:44:56-0600)
Maven home: C:\Program Files\NetBeans 7.2.1\java\maven
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:\Program Files (x86)\Java\jdk1.7.0_07\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"
也许您遇到了平台特定的错误?
关于java - -Xlint :all and maven 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369505/
当我构建我的项目时,我收到如下错误: [INFO] SomeClass.java: Some input files use or override a deprecated API. [INFO]
我在服务器启动时看到以下 Spring 框架异常 ** > Initialization of bean failed; nested exception is > java.lang.Illegal
scalax -Xlint 帮助提供以下信息: $ scalac -Xlint:help Enable or disable specific warnings adapted-args
我试图从一开始就保持一个非常干净和严格设置的项目,包括: 使用 the Checker Framework . 启用所有编译器警告并将它们视为错误( -Xlint:all 和 -Werror )。 使
这个问题已经有答案了: Java: Array of List (3 个回答) 已关闭 4 年前。 我收到编译错误。 “警告:[未选中]未选中的转换” ArrayList[] regionTroops
在编写了一个很长的 GUI 程序并在 Eclipse 中获得正确的结果之后,最可怕的错误是在终端中运行 seam 程序,并通过看到此错误而感到害怕: Note: ./au/edu/uow/UserIn
这个问题在这里已经有了答案: What causes javac to issue the "uses unchecked or unsafe operations" warning (12 个答案
我想知道使用 -Xlint 编译是否会对构建过程或项目产生一些负面影响? 如果没有,为什么 java 编译器默认没有打开这个功能? 我可以打开所有警告,甚至在构建应用程序的发布版本期间忘记这一点吗?
我的软件构建使用 -Xlint -Werror,所以我经常遇到编译器警告,这些警告会破坏我的构建。每隔一段时间我就会遇到一个需要抑制的警告,但总是很难弄清楚是哪个 Xlint 选项抑制了我看到的警告。
在 NetBeans 中清理和构建我的项目时,有一个警告说“不安全的操作”,所以我使用 -Xlint:unchecked 来查看这些操作,但我不明白我做错了什么。这些是警告,然后是我的代码,谢谢! U
当我有一个覆盖父类(super class)方法但未指定 @Override 注释的类时,我试图让我的 java 构建失败。 构建是通过 ant 完成的,我已将以下元素添加到我的 中任务: un
我正在尝试让 Maven 输出 lint 级别警告。我创建了一个小型测试程序,它应该生成关于从非静态上下文使用静态方法的警告,但是尽管有许多不同的插件配置选项,构建总是成功而没有任何警告! 谷歌搜索后
我已经处理这个问题一个星期了,虽然我找到了一些答案,但似乎没有一个能解决我程序的问题。 我不断收到这条消息: Note: Triangle.java uses unchecked or unsafe
基本上,有2个框架:“StartUpFrame”和“ActivityScreen” StartUpFrame是使用纯 Netbeans GUI 制作的,而ActivityScreen是通过编码而不使用
当我编译我的类时,我收到这些警告: Note: JSONLoader.java uses unchecked or unsafe operations Note: Recompile with -xL
我有一个带有 Maven 编译器插件的 Maven 项目,我想使用 -Xlint:overrides作为 java 编译器的选项,所以我将这一行添加到 maven 编译器插件 -Xlint:overr
我的程序似乎很合我意。但是,当我编译它时,我收到了这条消息: Note: Program.java uses unchecked or unsafe operations. Note: Recompi
我不断在 BlueJ/Java 中收到此消息。 http://cache.gyazo.com/19c325e77bbc120892d1035dcfda5377.png 我知道 StackOverflo
我有这门课,在src/main/java/RawTypes.java : import java.util.*; public class RawTypes { private List raw;
所以当我编译我的 android 应用程序时,我几乎总是会收到这样的消息: [javac] Note: /home/kurtis/sandbox/udj/androidApp/src/org/klnu
我是一名优秀的程序员,十分优秀!