繁体   English   中英

为什么 Maven(在 Netbeans 下)没有为目标 JDK 1.6 编译?

[英]Why is Maven (under Netbeans) not compiling for target JDK 1.6?

我想在 Android 项目中使用https://github.com/fmmfonseca/completely ,据我所知,这意味着它应该被编译为目标 JDK 1.8

我正在使用 Netbeans 11 并将目标设置为 1.8

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
  <parent>
    <artifactId>completely</artifactId>
    <groupId>com.miguelfonseca.completely</groupId>
    <version>0.9.0</version>
  </parent>
  <artifactId>completely-core</artifactId>
  <name>completely-core</name>
  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.6.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
          <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
    </pluginRepositories>
    <repositories>
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>  
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
           
            </configuration>
        </plugin>
        <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
               
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

然而,当我编译并检查新创建的.class 文件时,例如。

AutoCompleteLibrary\core\target\classes\com\miguelfonseca\completely\AutocompleteEngine.class

我看到的是十六进制

CA FE BA BE 00 00 00 37  

37表示 class 文件编译为语言级别55或 JDK 11。

我已经尝试了所有可能的方法来在 pom 中设置目标 JDK,但没有任何效果。

这是 Maven (v3) 日志。 我注意到其中有<release>11</release> ,不知道为什么。

=== PROJECT BUILD PLAN ================================================
Project:       com.miguelfonseca.completely:completely-core:0.9.0
Dependencies (collect): []
Dependencies (resolve): [compile, runtime, test]
Repositories (dependencies): [central (https://repo.maven.apache.org/maven2, default, releases)]
Repositories (plugins)     : [central (https://repo.maven.apache.org/maven2, default, releases)]
-----------------------------------------------------------------------
Goal:          org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean)
Style:         Regular
Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <directory default-value="${project.build.directory}"/>
  <excludeDefaultDirectories default-value="false">${clean.excludeDefaultDirectories}</excludeDefaultDirectories>
  <failOnError default-value="true">${maven.clean.failOnError}</failOnError>
  <followSymLinks default-value="false">${clean.followSymLinks}</followSymLinks>
  <outputDirectory default-value="${project.build.outputDirectory}"/>
  <reportDirectory default-value="${project.reporting.outputDirectory}"/>
  <retryOnError default-value="true">${maven.clean.retryOnError}</retryOnError>
  <skip default-value="false">${clean.skip}</skip>
  <testOutputDirectory default-value="${project.build.testOutputDirectory}"/>
  <verbose>${clean.verbose}</verbose>
</configuration>
-----------------------------------------------------------------------
Goal:          org.jacoco:jacoco-maven-plugin:0.8.5:prepare-agent (default)
Style:         Regular
Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <address>${jacoco.address}</address>
  <append>${jacoco.append}</append>
  <classDumpDir>${jacoco.classDumpDir}</classDumpDir>
  <destFile default-value="${project.build.directory}/jacoco.exec">${jacoco.destFile}</destFile>
  <dumpOnExit>${jacoco.dumpOnExit}</dumpOnExit>
  <exclClassLoaders>${jacoco.exclClassLoaders}</exclClassLoaders>
  <inclBootstrapClasses>${jacoco.inclBootstrapClasses}</inclBootstrapClasses>
  <inclNoLocationClasses>${jacoco.inclNoLocationClasses}</inclNoLocationClasses>
  <jmx>${jacoco.jmx}</jmx>
  <output>${jacoco.output}</output>
  <pluginArtifactMap>${plugin.artifactMap}</pluginArtifactMap>
  <port>${jacoco.port}</port>
  <project>${project}</project>
  <propertyName>${jacoco.propertyName}</propertyName>
  <sessionId>${jacoco.sessionId}</sessionId>
  <skip default-value="false">${jacoco.skip}</skip>
</configuration>
-----------------------------------------------------------------------
Goal:          org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources)
Style:         Regular
Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <buildFilters default-value="${project.build.filters}"/>
  <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding>
  <escapeString>${maven.resources.escapeString}</escapeString>
  <escapeWindowsPaths default-value="true">${maven.resources.escapeWindowsPaths}</escapeWindowsPaths>
  <includeEmptyDirs default-value="false">${maven.resources.includeEmptyDirs}</includeEmptyDirs>
  <outputDirectory default-value="${project.build.outputDirectory}"/>
  <overwrite default-value="false">${maven.resources.overwrite}</overwrite>
  <project default-value="${project}"/>
  <resources default-value="${project.resources}"/>
  <session default-value="${session}"/>
  <supportMultiLineFiltering default-value="false">${maven.resources.supportMultiLineFiltering}</supportMultiLineFiltering>
  <useBuildFilters default-value="true"/>
  <useDefaultDelimiters default-value="true"/>
</configuration>
-----------------------------------------------------------------------
Goal:          org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile)
Style:         Regular
Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <basedir default-value="${basedir}"/>
  <buildDirectory default-value="${project.build.directory}"/>
  <compilePath default-value="${project.compileClasspathElements}"/>
  <compileSourceRoots default-value="${project.compileSourceRoots}"/>
  <compilerArgs>
    <arg>-Xlint</arg>
  </compilerArgs>
  <compilerId default-value="javac">${maven.compiler.compilerId}</compilerId>
  <compilerReuseStrategy default-value="${reuseCreated}">${maven.compiler.compilerReuseStrategy}</compilerReuseStrategy>
  <compilerVersion>${maven.compiler.compilerVersion}</compilerVersion>
  <debug default-value="true">${maven.compiler.debug}</debug>
  <debuglevel>${maven.compiler.debuglevel}</debuglevel>
  <encoding default-value="${project.build.sourceEncoding}">${encoding}</encoding>
  <executable>${maven.compiler.executable}</executable>
  <failOnError default-value="true">${maven.compiler.failOnError}</failOnError>
  <failOnWarning default-value="false">${maven.compiler.failOnWarning}</failOnWarning>
  <forceJavacCompilerUse default-value="false">${maven.compiler.forceJavacCompilerUse}</forceJavacCompilerUse>
  <fork default-value="false">${maven.compiler.fork}</fork>
  <generatedSourcesDirectory default-value="${project.build.directory}/generated-sources/annotations"/>
  <maxmem>${maven.compiler.maxmem}</maxmem>
  <meminitial>${maven.compiler.meminitial}</meminitial>
  <mojoExecution default-value="${mojoExecution}"/>
  <optimize default-value="false">${maven.compiler.optimize}</optimize>
  <outputDirectory default-value="${project.build.outputDirectory}"/>
  <parameters default-value="false">${maven.compiler.parameters}</parameters>
  <project default-value="${project}"/>
  <projectArtifact default-value="${project.artifact}"/>
  <release>11</release>
  <session default-value="${session}"/>
  <showDeprecation default-value="false">${maven.compiler.showDeprecation}</showDeprecation>
  <showWarnings default-value="false">${maven.compiler.showWarnings}</showWarnings>
  <skipMain>${maven.main.skip}</skipMain>
  <skipMultiThreadWarning default-value="false">${maven.compiler.skipMultiThreadWarning}</skipMultiThreadWarning>
  <source default-value="1.6">${maven.compiler.source}</source>
  <staleMillis default-value="0">${lastModGranularityMs}</staleMillis>
  <target default-value="1.6">${maven.compiler.target}</target>
  <useIncrementalCompilation default-value="true">${maven.compiler.useIncrementalCompilation}</useIncrementalCompilation>
  <verbose default-value="false">${maven.compiler.verbose}</verbose>
</configuration>
....

--- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ completely-core ---
Configuring mojo org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-compiler-plugin:3.8.1, parent: jdk.internal.loader.ClassLoaders$AppClassLoader@c387f44]
Configuring mojo 'org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile' with basic configurator -->
  (f) basedir = c:\AutoCompleteLibrary\core
  (f) buildDirectory = c:\AutoCompleteLibrary\core\target
  (f) compilePath = [c:\AutoCompleteLibrary\core\target\classes, C:\Users\jdlwr\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar]
  (f) compileSourceRoots = [c:\AutoCompleteLibrary\core\src\test\java]
  (f) compilerArgs = [-Xlint]
  (f) compilerId = javac
  (f) debug = true
  (f) encoding = utf-8
  (f) failOnError = true
  (f) failOnWarning = false
  (f) forceJavacCompilerUse = false
  (f) fork = false
  (f) generatedTestSourcesDirectory = c:\AutoCompleteLibrary\core\target\generated-test-sources\test-annotations
  (f) mojoExecution = org.apache.maven.plugins:maven-compiler-plugin:3.8.1:testCompile {execution: default-testCompile}
  (f) optimize = false
  (f) outputDirectory = c:\AutoCompleteLibrary\core\target\test-classes
  (f) parameters = false
  (f) project = MavenProject: com.miguelfonseca.completely:completely-core:0.9.0 @ c:\AutoCompleteLibrary\core\pom.xml
  (s) release = 11
  (f) session = org.apache.maven.execution.MavenSession@2e3f79a2
  (f) showDeprecation = false
  (f) showWarnings = false
  (f) skipMultiThreadWarning = false
  (f) source = 1.8
  (f) staleMillis = 0
  (s) target = 1.8
  (f) testPath = [c:\AutoCompleteLibrary\core\target\test-classes, c:\AutoCompleteLibrary\core\target\classes, C:\Users\jdlwr\.m2\repository\org\junit\jupiter\junit-jupiter\5.6.2\junit-jupiter-5.6.2.jar, C:\Users\jdlwr\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.6.2\junit-jupiter-api-5.6.2.jar, C:\Users\jdlwr\.m2\repository\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar, C:\Users\jdlwr\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar, C:\Users\jdlwr\.m2\repository\org\junit\platform\junit-platform-commons\1.6.2\junit-platform-commons-1.6.2.jar, C:\Users\jdlwr\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.6.2\junit-jupiter-params-5.6.2.jar, C:\Users\jdlwr\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.6.2\junit-jupiter-engine-5.6.2.jar, C:\Users\jdlwr\.m2\repository\org\junit\platform\junit-platform-engine\1.6.2\junit-platform-engine-1.6.2.jar, C:\Users\jdlwr\.m2\repository\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar]
  (f) useIncrementalCompilation = true
  (f) verbose = false

最后一部分我不明白的是它同时具有

(s) release = 11
(s) target = 1.8

<release>11</release>的设置来自您的父 POM:

https://search.maven.org/artifact/com.miguelfonseca.completely/completely/0.9.0/pom

我猜它优先于您的源和目标设置。 尝试覆盖release配置。

尝试直接为编译器插件设置版本:

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
         <source>1.8</source>
         <target>1.8</target>
    </configuration>
</plugin>

暂无
暂无

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

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