Tiftik düzey uyarıları vermek için maven almaya çalışıyorum. Statik olmayan bir bağlamdan statik bir yöntem kullanmak konusunda bir uyarı üretmesi gereken küçük bir test programı oluşturdum, ancak bir dizi farklı eklenti konfigürasyon seçeneğine rağmen, derleme her zaman herhangi bir uyarı olmadan başarılı oluyor!-Xlint ile sorun: all ve maven
Bazı işler yaptıktan sonra derleyici eklentisinin 'compilerArgument (ler)' özniteliğini kullanma önerilerini buldum, ancak bu benim için de çalışmıyor gibi görünüyor. Java 6 dize için javadoc olarak,
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"));
}
}
Bu program bir uyarı olmalıdır :: formatı bu yöntemin sadece statik versiyonları var olduğunu gösterir:
İşte uyarı oluşturmalıdır benim örnek program. Ben her iki formu denedim
<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>
: Geçmişte beni ısırdı ve derleyici İşte
benim pom dosyasıdır :-) bunu algılamalıdır gibi ben özellikle bu durumda yakalamak istiyor compilerArgument (ler) öznitelikleri boşuna.[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] ------------------------------------------------------------------------
Ek sürüm bilgileri:
$ 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
Gönderdiğiniz yöntemi kullanarak, derleyici eklentinin yuvalanmış xml etiketlerini gerçek derleyici paramları olarak yorumladığı görülüyor. Maven aşağıdaki çıktılar: "Hedefi çalıştırmak için başarısız oldu: org.apache.maven.plugins: maven-compiler-plugin: 3.0: proje üzerinde derleme (varsayılan derleme) JavaScratchSpace: Önemli bir hata derleme: geçersiz flag: -compilerArgument" - ne zaman kullanarak "\t \t \t \t \t \t \t \t \t \t \t -Xlint: tüm compilerArgument> \t \t \t \t \t compilerArguments>" - belki kullanıyorum sürümü farklı sözcüklerle vardır?Maven-compiler-plugin 3.0 sürümünü güncelledim –
@RonDahlgren Üzgünüm, ilk cevabı berbat ettiğimi fark ettim, umarım düzenlenmiş olanın size faydası olacaktır. –
Tüm javacım gibiydi! Openjdk, bu statik yöntem kullanımını doğru şekilde yakalamıyor gibi görünüyor. Gönderdiğiniz pom, istediği gibi çalışıyor, javac'ım bunu görmezden gelmeyi seçiyor. Doğrudan 'javac -Xlint: all App.java' kullanarak doğrulandı. Yardım için teşekkürler! –