2017-09-08 33 views
4

我有一个project。最初它是与结构的单模块项目这样致命错误编译无效标志 - 模块路径

java-cloud-sample\ 
    src\ 
     main\ 
      java 
    pom.xml 

我决定把它变成一个多模块结构 - 我用java 9反正。 所以我隔像这样

java-cloud-sample\ 
    java-cloud-rest-api\ 
     src\ 
     pom.xml 
    pom.xml 

凡根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> 

    <groupId>com.lapots.breed.platform.cloud</groupId> 
    <artifactId>java-cloud-sample</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>java-cloud-rest-api</module> 
    </modules> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.6.RELEASE</version> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <maven.compiler.source>1.9</maven.compiler.source> 
     <maven.compiler.target>1.9</maven.compiler.target> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.6.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>3.0.0</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>3.0.1</version> 
       <executions> 
        <execution> 
         <id>copy-dependencies</id> 
         <phase>package</phase> 
         <goals><goal>copy-dependencies</goal></goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

而且模块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> 

    <parent> 
     <groupId>com.lapots.breed.platform.cloud</groupId> 
     <artifactId>java-cloud-sample</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <artifactId>java-cloud-rest-api</artifactId> 
    <description>Demo project for Spring Boot</description> 
    <packaging>jar</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <goals> 
          <goal>build-info</goal> 
         </goals> 
         <configuration> 
          <additionalProperties> 
           <encoding.source>${project.build.sourceEncoding}</encoding.source> 
           <encoding.reporting>${project.reporting.outputEncoding}</encoding.reporting> 
           <java.source>${maven.compiler.source}</java.source> 
           <java.target>${maven.compiler.target}</java.target> 
          </additionalProperties> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

但是当我尝试运行mvn clean package我得到

INFO] java-cloud-rest-api ................................ FAILURE [ 1.060 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.104 s 
[INFO] Finished at: 2017-09-08T17:15:46+03:00 
[INFO] Final Memory: 27M/331M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.2:compile (default-compile) on project java-cloud-rest-api: Fatal error compiling: invalid flag: --module-path -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :java-cloud-rest-api 

问题是什么? (也许我应该分裂maven项目为独立的模块,每个模块的Maven拆分成java模块)

回答

6

安装在您的机器配置了作为默认的Java版本出现此故障。您可以通过在终端上执行

mvn -version 

和检查在配置规定的Java版本证实了这一点。

要解决的版本,您可以创建/编辑你的机器上mavenrc(在MacOS)文件:

vi ~/.mavenrc 

包括这些

export PATH 
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/ 
export PATH=${PATH}:$JAVA_HOME/bin 

一旦你保存此配置,你可以确认maven应该使用Java版本9使用相同的命令,然后你的项目将建立没有规定的错误。

+1

哦,我明白了。我有'java 8'作为默认工作,但在家里我有'java 9',所以我在那里检查。 – lapots

+1

@ user1432980因此,使用Java版本9配置的Maven应该在没有此错误的情况下生成。您可以相应地配置。 – nullpointer

+1

确实与java_home'设置了'java 9'它编译(与'未命名模块'异常,但至少这是东西) – lapots

相关问题