2017-02-07 53 views
3

我收到一个奇怪的错误,当我尝试运行我的java spring项目的验证生命周期的maven。请注意,它使用mvn spring-boot:run编译罚款,但是当我运行mvn clean verify它炸毁:maven surefire验证java.lang.ClassNotFoundException

$mvn clean verify -Dsurefire.skip=true -X 
... 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.209 sec <<< FAILURE! - in com.fitforger.FitForgerBackendApplicationTests 
    initializationError(com.fitforger.FitForgerBackendApplicationTests) Time elapsed: 0.005 sec <<< ERROR! 
    java.lang.NoClassDefFoundError: com/fitforger/model/GymRat 
    Caused by: java.lang.ClassNotFoundException: com.fitforger.model.GymRat 

我可以提供具有相关性?请参阅下面的一些初始上下文。

项目结构:我的pom.xml的

+----src 
    +----main 
    | +----java 
    | | +----com 
    | |   +----fitforger 
    | |    +----controller 
    | |    | +----GymRatController.java 
    | |    | +----WorkoutNodeController.java 
    | |    +----dao 
    | |    | +----GymRatDAO.java 
    | |    +----exception 
    | |    | +----GymRatCreationFailure.java 
    | |    | +----GymRatExistsException.java 
    | |    | +----GymRatNotFound.java 
    | |    | +----GymRatUpdateFailure.java 
    | |    +----FitForgerBackendApplication.java 
    | |    +----model 
    | |    | +----FitForgerModel.java 
    | |    | +----GymRat.java 
    | |    | +----WorkoutAttribute.java 
    | |    | +----WorkoutNode.java 
    | |    | +----WorkoutNodeTypes.java 
    | |    +----repository 
    | |     +----CouchbaseRepository.java 
    | |     +----FitForgerRepository.java 
    | +----resources 
    |   +----application.properties 
    +----test 
      +----java 
      | +----com 
      |   +----fitforger 
      |    +----FitForgerBackendApplicationTests.java 
      |    +----GymRatSteps.java 
      |    +----repository 
      |     +----CouchbaseRepositoryTest.java 
      +----resources 
       +----com 
        +----fitforger 
         +----GymRat.feature 

相关位:通过执行以下解决

<build> 
    <resources> 
     <resource> 
      <directory>resources</directory> 
      <targetPath>${project.build.outputDirectory}</targetPath> 
      <includes> 
       <include>application.properties</include> 
      </includes> 
     </resource> 
    </resources> 

    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.1</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.19.1</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <version>1.5.1.RELEASE</version> 
     </plugin> 
    </plugins> 

    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>1.5.1.RELEASE</version> 
       <executions> 
        <execution> 
         <id>pre-integration-test</id> 
         <goals> 
          <goal>start</goal> 
         </goals> 
        </execution> 
        <execution> 
         <id>post-integration-test</id> 
         <goals> 
          <goal>stop</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <encoding>UTF-8</encoding> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <excludes> 
         <exclude>com.fitforger.FitForgerBackendApplicationTests</exclude> 
        </excludes> 
        <skip>${surefire.skip}</skip> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <includes> 
         <include>com.fitforger.FitForgerBackendApplicationTests</include> 
        </includes> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build 
+1

这(https://github.com/spring-projects/spring-boot/issues/6254)看起来是类似于你面临的。你可以尝试用' org.springframework.boot 弹簧引导Maven的插件 <配置> EXEC ' – GauravJ

+0

这个工作!非常感谢...可能需要添加一般性回复,以便将其标记为正确。 –

+0

很高兴它的工作。我已经将它作为答案。 – GauravJ

回答

2

OP问题,

This看起来你面对什么是相似的。你可以尝试与

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <configuration> 
     <classifier>exec</classifier> 
    </configuration> 
</plugin>