2016-06-14 430 views
0

我試圖將我的Spring Boot應用打包爲戰爭文件,以便我可以使用LightAdmin(其中a limitation僅適用於使用傳統戰爭包裝的Spring Boot應用)。Spring Boot Package to war:測試失敗

我試圖運行mvn package目標,但在這種錯誤的測試階段失敗:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 5.528 s 
[INFO] Finished at: 2016-06-11T15:09:35-04:00 
[INFO] Final Memory: 43M/393M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project vote: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test failed: There was an error in the forked process 
[ERROR] org.apache.maven.surefire.util.SurefireReflectionException: java.lang.ClassNotFoundException: org.apache.maven.surefire.junit4.JUnit4Provider 
[ERROR] at org.apache.maven.surefire.util.ReflectionUtils.loadClass(ReflectionUtils.java:252) 
[ERROR] at org.apache.maven.surefire.util.ReflectionUtils.instantiateOneArg(ReflectionUtils.java:128) 
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.createProviderInCurrentClassloader(ForkedBooter.java:230) 
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:199) 
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:155) 
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103) 
[ERROR] Caused by: java.lang.ClassNotFoundException: org.apache.maven.surefire.junit4.JUnit4Provider 
[ERROR] at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
[ERROR] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
[ERROR] at org.apache.maven.surefire.util.ReflectionUtils.loadClass(ReflectionUtils.java:244) 
[ERROR] ... 5 more 

這裏是我的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>group</groupId> 
    <artifactId>artifact</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.1.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <repositories> 
     <repository> 
      <id>lightadmin-nexus-releases</id> 
      <url>http://lightadmin.org/nexus/content/repositories/releases</url> 
      <releases> 
       <enabled>true</enabled> 
       <updatePolicy>always</updatePolicy> 
      </releases> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jersey</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-social-facebook</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-social-linkedin</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-social-twitter</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-freemarker</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <optional>true</optional> 
     </dependency> 

     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- temporary in memory H2 DB for testing --> 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
      <version>1.4.191</version> 
     </dependency> 

     <!--Testing packages--> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.12</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>4.2.6.RELEASE</version> 
     </dependency> 

     <!--the administration panel is powered by LightAdmin--> 
     <dependency> 
      <groupId>org.lightadmin</groupId> 
      <artifactId>lightadmin</artifactId> 
      <version>1.2.0.RC1</version> 
     </dependency> 
     <!--need to add tomcat starter for war files (lightadmin needs a war file)--> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 

      <!--Used to generate a *.war file (needed to run LightAdmin--> 
      <!--http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins--> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <version>1.3.5.RELEASE</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>repackage</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <!-- 
      Front End Build plugins 
      https://medium.com/@l1ambda/webpack-a-spring-boot-app-with-instant-page-refresh-5d051a09d26f 
      --> 
      <plugin> 
       <!-- Build the front end --> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.4.0</version> 
       <executions> 
        <execution> 
         <phase>generate-resources</phase> 
         <goals> 
          <goal>exec</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <executable>npm</executable> 
        <arguments> 
         <argument>run</argument> 
         <argument>build</argument> 
        </arguments> 
        <!--<workingDirectory>src/main/frontend</workingDirectory>--> 
        <workingDirectory>.</workingDirectory> 
       </configuration> 
      </plugin> 
      <plugin> 
       <!-- Copy the front end into the static folder for JARs--> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.7</version> 
       <executions> 
        <execution> 
         <id>copy-resources</id> 
         <phase>generate-resources</phase> 
         <goals> 
          <goal>copy-resources</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${basedir}/target/classes/static/assets</outputDirectory> 
          <resources> 
           <resource> 
            <directory>src/main/frontend/dist</directory> 
            <filtering>false</filtering> 
           </resource> 
          </resources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 


</project> 
+0

您是否嘗試在您的pom中添加surefire插件? – techtabu

+0

@techtabu謝謝你,先生!這是解決方案 –

回答

0

解決的辦法是添加maven surefire插件:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven.surefire</groupId> 
      <artifactId>surefire-junit47</artifactId> 
      <version>2.19.1</version> 
     </dependency> 
    </dependencies> 
</plugin>