2017-06-05 730 views
0

你好,我試圖運行mvn clean install,和我收到一個包裹不存在錯誤:Maven:軟件包不存在。依賴似乎正確

[DEBUG] Source roots: 
[DEBUG] /Users/username/Projects/Venice/clarity/clarity-test-e2e/src/test/java 
[DEBUG] Command line options: 
[DEBUG] -d /Users/username/Projects/Venice/clarity/clarity-test-e2e/target/test-classes -classpath /Users/username/Projects/Venice/clarity/clarity-test-e2e/target/test-classes:/Users/username/Projects/Venice/clarity/clarity-test-e2e/target/classes:/Users/username/.m2/repository/uk/co/jemos/podam/podam/7.0.5.RELEASE/podam-7.0.5.RELEASE.jar:/Users/username/.m2/repository/net/jcip/jcip-annotations/1.0/jcip-annotations-1.0.jar:/Users/username/.m2/repository/org/slf4j/slf4j-api/1.7.22/slf4j-api-1.7.22.jar:/Users/username/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar:/Users/username/.m2/repository/javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar:/Users/username/.m2/repository/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:/Users/username/.m2/repository/org/testng/testng/6.11/testng-6.11.jar:/Users/username/.m2/repository/com/beust/jcommander/1.64/jcommander-1.64.jar:/Users/username/.m2/repository/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar:/Users/username/Projects/Venice/clarity/clarity-etl/target/clarity-etl-1.0.0-SNAPSHOT.jar:/Users/username/Projects/Venice/clarity/clarity-statusserv/dao/target/clarity-statusserv-dao-1.0.0-SNAPSHOT.jar:/Users/username/Projects/Venice/clarity/clarity-statusserv/model/target/clarity-statusserv-model-1.0.0-SNAPSHOT.jar:/Users/username/.m2/repository/org/apache/commons/commons-collections4/4.1/commons-collections4-4.1.jar:/Users/username/.m2/repository/org/hibernate/hibernate-validator/5.4.1.Final/hibernate-validator-5.4.1.Final.jar:/Users/username/.m2/repository/org/jboss/logging/jboss-logging/3.3.0.Final/jboss-logging-3.3.0.Final.jar:/Users/username/.m2/repository/com/fasterxml/classmate/1.3.3/classmate-1.3.3.jar:/Users/username/.m2/repository/org/projectlombok/lombok/1.16.12/lombok-1.16.12.jar:/Users/username/.m2/repository/org/springframework/boot/spring-boot-starter/1.5.1.RELEASE/spring-boot-starter-1.5.1.RELEASE.jar:/Users/username/.m2/repository/org/springframework/boot/spring-boot/1.5.1.RELEASE/spring-boot-1.5.1.RELEASE.jar:/Users/username/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.5.1.RELEASE/spring-boot-autoconfigure-1.5.1.RELEASE.jar:/Users/username/.m2/repository/org/springframework/spring-core/4.3.6.RELEASE/spring-core-4.3.6.RELEASE.jar:/Users/username/.m2/repository/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.jar:/Users/username/.m2/repository/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.jar:/Users/username/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/Users/username/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/username/.m2/repository/org/springframework/boot/spring-boot-starter-log4j2/1.5.1.RELEASE/spring-boot-starter-log4j2-1.5.1.RELEASE.jar:/Users/username/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.7/log4j-slf4j-impl-2.7.jar:/Users/username/.m2/repository/org/apache/logging/log4j/log4j-api/2.7/log4j-api-2.7.jar:/Users/username/.m2/repository/org/apache/logging/log4j/log4j-core/2.7/log4j-core-2.7.jar:/Users/username/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.22/jcl-over-slf4j-1.7.22.jar:/Users/username/.m2/repository/org/slf4j/jul-to-slf4j/1.7.22/jul-to-slf4j-1.7.22.jar:/Users/username/.m2/repository/org/springframework/data/spring-data-couchbase/2.2.0.RELEASE/spring-data-couchbase-2.2.0.RELEASE.jar:/Users/username/.m2/repository/org/springframework/spring-context/4.3.6.RELEASE/spring-context-4.3.6.RELEASE.jar:/Users/username/.m2/repository/org/springframework/spring-aop/4.3.6.RELEASE/spring-aop-4.3.6.RELEASE.jar:/Users/username/.m2/repository/org/springframework/spring-beans/4.3.6.RELEASE/spring-beans-4.3.6.RELEASE.jar:/Users/username/.m2/repository/org/springframework/spring-expression/4.3.6.RELEASE/spring-expression-4.3.6.RELEASE.jar:/Users/username/.m2/repository/org/springframework/spring-web/4.3.6.RELEASE/spring-web-4.3.6.RELEASE.jar:/Users/username/.m2/repository/org/springframework/spring-tx/4.3.6.RELEASE/spring-tx-4.3.6.RELEASE.jar:/Users/username/.m2/repository/org/springframework/data/spring-data-commons/1.13.0.RELEASE/spring-data-commons-1.13.0.RELEASE.jar:/Users/username/.m2/repository/com/couchbase/client/java-client/2.3.7/java-client-2.3.7.jar:/Users/username/.m2/repository/com/couchbase/client/core-io/1.3.7/core-io-1.3.7.jar:/Users/username/.m2/repository/io/reactivex/rxjava/1.1.8/rxjava-1.1.8.jar:/Users/username/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.6/jackson-databind-2.8.6.jar:/Users/username/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar:/Users/username/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.6/jackson-core-2.8.6.jar:/Users/username/.m2/repository/org/springframework/boot/spring-boot-starter-web/1.5.1.RELEASE/spring-boot-starter-web-1.5.1.RELEASE.jar:/Users/username/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/1.5.1.RELEASE/spring-boot-starter-tomcat-1.5.1.RELEASE.jar:/Users/username/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/8.5.11/tomcat-embed-core-8.5.11.jar:/Users/username/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/8.5.11/tomcat-embed-el-8.5.11.jar:/Users/username/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/8.5.11/tomcat-embed-websocket-8.5.11.jar:/Users/username/.m2/repository/org/springframework/spring-webmvc/4.3.6.RELEASE/spring-webmvc-4.3.6.RELEASE.jar: -sourcepath /Users/username/Projects/Venice/clarity/clarity-test-e2e/src/test/java: -s /Users/username/Projects/Venice/clarity/clarity-test-e2e/target/generated-test-sources/test-annotations -g -nowarn -target 1.8 -source 1.8 -encoding UTF-8 
[DEBUG] incrementalBuildHelper#beforeRebuildExecution 
[INFO] Compiling 3 source files to /Users/username/Projects/Venice/clarity/clarity-test-e2e/target/test-classes 
[DEBUG] incrementalBuildHelper#afterRebuildExecution 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /Users/username/Projects/Venice/clarity/clarity-test-e2e/src/test/java/com/company/consumer/tools/clarity/e2e/etl/ETLHappyPathSuite.java:[6,58] package com.company.consumer.tools.clarity.etl.dao.v1.state does not exist 
[INFO] 1 error 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] Clarity - Parent Pom ............................... SUCCESS [ 0.256 s] 
[INFO] Clarity - Status Service Parent Pom ................ SUCCESS [ 0.007 s] 
[INFO] Clarity - Status Service Model ..................... SUCCESS [ 2.416 s] 
[INFO] Clarity - Status Service DAO Components ............ SUCCESS [ 0.693 s] 
[INFO] Clarity - Status Service ........................... SUCCESS [ 2.119 s] 
[INFO] Clarity - Checkstyle Configuration ................. SUCCESS [ 0.034 s] 
[INFO] Clarity - ETL ...................................... SUCCESS [ 0.776 s] 
[INFO] Clarity - Testing E2E .............................. FAILURE [ 0.216 s] 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 7.039 s 
[INFO] Finished at: 2017-06-05T11:47:36-07:00 
[INFO] Final Memory: 47M/536M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project clarity-test-e2e: Compilation failure 
[ERROR] /Users/username/Projects/Venice/clarity/clarity-test-e2e/src/test/java/com/company/consumer/tools/clarity/e2e/etl/ETLHappyPathSuite.java:[6,58] package com.company.consumer.tools.clarity.etl.dao.v1.state does not exist 
[ERROR] -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project clarity-test-e2e: Compilation failure 
/Users/username/Projects/Venice/clarity/clarity-test-e2e/src/test/java/com/company/consumer/tools/clarity/e2e/etl/ETLHappyPathSuite.java:[6,58] package com.company.consumer.tools.clarity.etl.dao.v1.state does not exist 

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure 
/Users/username/Projects/Venice/clarity/clarity-test-e2e/src/test/java/com/company/consumer/tools/clarity/e2e/etl/ETLHappyPathSuite.java:[6,58] package com.company.consumer.tools.clarity.etl.dao.v1.state does not exist 

    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858) 
    at org.apache.maven.plugin.compiler.TestCompilerMojo.execute(TestCompilerMojo.java:152) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 
    ... 19 more 
[ERROR] 
[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/MojoFailureException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :clarity-test-e2e 

的依賴POM:

<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 --> 
    <!-- ================================================================== --> 
    <parent> 
     <groupId>com.company.consumer.tools.clarity</groupId> 
     <artifactId>clarity-parent</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 



    <!-- ================================================================== --> 
    <!-- Application Description --> 
    <!-- ================================================================== --> 
    <artifactId>clarity-etl</artifactId> 
    <packaging>jar</packaging> 
    <name>Clarity - ETL</name> 
    <description> 
    </description> 

    <properties> 
     <app.mainClass>com.company.consumer.tools.clarity.etl.ETLMain</app.mainClass> 
     <docker.image.prefix>dockerhub.companycorp.com/username</docker.image.prefix> 
    </properties> 


    <!-- ================================================================== --> 
    <!-- Dependencies --> 
    <!-- ================================================================== --> 
    <dependencies> 

     <!-- ================================================================== --> 
     <!-- Clarity Dependencies --> 
     <dependency> 
      <groupId>com.company.consumer.tools.clarity</groupId> 
      <artifactId>clarity-statusserv-dao</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
     </dependency> 

     <!-- ================================================================== --> 
     <!-- Test Dependencies --> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-all</artifactId> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 



    <!-- ================================================================== --> 
    <!-- Build --> 
    <!-- ================================================================== --> 
    <build> 
     <plugins> 
      <!-- ================================================================== --> 
      <!-- Invoke spring boot application. --> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <mainClass>${app.mainClass}</mainClass> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>com.spotify</groupId> 
       <artifactId>docker-maven-plugin</artifactId> 
       <version>0.4.13</version> 
       <configuration> 
        <imageName>${docker.image.prefix}/${project.artifactId}</imageName> 
        <dockerDirectory>src/main/docker</dockerDirectory> 
        <resources> 
         <resource> 
          <targetPath>/</targetPath> 
          <directory>${project.build.directory}</directory> 
          <include>${project.build.finalName}.jar</include> 
         </resource> 
        </resources> 
        <useConfigFile>true</useConfigFile> 
        <registryUrl>https://dockerhub.companycorp.com/</registryUrl> 
       </configuration> 
      </plugin> 

     </plugins> 
    </build> 
</project> 

現在

[username]@[localhost] (master)$jar -tf 
/Users/username/.m2/repository/com/company/consumer/tools/clarity/clarity- 
etl/1.0.0-SNAPSHOT/clarity-etl-1.0.0-SNAPSHOT.jar | grep dao 
BOOT-INF/classes/com/company/consumer/tools/clarity/etl/dao/ 
BOOT-INF/classes/com/company/consumer/tools/clarity/etl/dao/v1/ 
BOOT-INF/classes/com/company/consumer/tools/clarity/etl/dao/v1/state/ 
BOOT-INF/classes/com/company/consumer/tools/clarity/etl/dao/v1/ 
state/EtlStateDocument.class 
BOOT-INF/classes/com/company/consumer/tools/clarity/etl/dao/v1/ 
state/EtlStateRepository.class 

運行後mvn dependency:build-classpath我可以看到clarity-etl-1.0.0-SNAPSHOT.jar(依賴項)在類路徑上。

這裏是依賴POM:

<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 --> 
    <!-- ================================================================== --> 
    <parent> 
     <groupId>com.company.consumer.tools.clarity</groupId> 
     <artifactId>clarity-parent</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 



    <!-- ================================================================== --> 
    <!-- Project Settings --> 
    <!-- ================================================================== --> 
    <artifactId>clarity-test-e2e</artifactId> 
    <name>Clarity - Testing E2E</name> 
    <description> 
     The end to end testing for Clarity. 
    </description> 
    <properties> 
     <org.apache.maven.surefire.version>2.19.1</org.apache.maven.surefire.version> 
    </properties> 


    <!-- ================================================================== --> 
    <!-- Distribution Management --> 
    <!-- ================================================================== --> 
    <distributionManagement> 
     <repository> 
      <id>releases</id> 
      <name>Internal Nexus Releases</name> 
      <url>http://nexus.company.com/nexus/content/repositories/releases/</url> 
     </repository> 
     <snapshotRepository> 
      <id>snapshots</id> 
      <name>Internal Nexus Snapshots</name> 
      <url>http://nexus.company.com/nexus/content/repositories/snapshots/</url> 
     </snapshotRepository> 
    </distributionManagement> 



    <!-- ================================================================== --> 
    <!-- Repositories --> 
    <!-- ================================================================== --> 
    <repositories> 
     <repository> 
      <id>company-nexus</id> 
      <name>company Nexus</name> 
      <layout>default</layout> 
      <url>http://nexus.company.com/nexus/content/groups/public-all/</url> 
     </repository> 
    </repositories> 

    <dependencies> 
     <dependency> 
      <groupId>uk.co.jemos.podam</groupId> 
      <artifactId>podam</artifactId> 
      <version>7.0.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.company.consumer.tools.clarity</groupId> 
      <artifactId>clarity-etl</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <!-- ================================================================== --> 
    <!-- Build --> 
    <!-- ================================================================== --> 
    <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> 
     </plugins> 
    </build> 

    <profiles> 
     <profile> 
      <id>e2e</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>${org.apache.maven.surefire.version}</version> 
         <dependencies> 
          <dependency> 
           <groupId>org.apache.maven.surefire</groupId> 
           <artifactId>surefire-testng</artifactId> 
           <version>${org.apache.maven.surefire.version}</version> 
          </dependency> 
         </dependencies> 
         <configuration> 
          <systemPropertyVariables> 
           <dbhost>${dbhost}</dbhost> 
           <dbuser>${dbuser}</dbuser> 
           <dbpass>${dbpass}</dbpass> 
           <saasEndpoint>${saasEndpoint}</saasEndpoint> 
           <cssEndpoint>${cssEndpoint}</cssEndpoint> 
          </systemPropertyVariables> 
          <suiteXmlFiles> 
           <suiteXmlFile>${suiteXmlFile}</suiteXmlFile> 
          </suiteXmlFiles> 
          <parallel>all</parallel> 
          <useUnlimitedThreads>true</useUnlimitedThreads> 
          <properties> 
           <property> 
            <name>suitethreadpoolsize</name> 
            <value>20</value> 
           </property> 
          </properties> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 

我不知道這是爲什麼不建立正確使用mvn clean install命令行,但現在看來,當我從Eclipse的執行工作完全正常。我認爲,默認情況下,Eclipse提供了類路徑上的所有類(不管範圍如何),但是我嘗試了不同的作用域而無濟於事。

任何幫助將不勝感激。提前致謝!

+2

注意jar中的類在BOOT-INF/classes /下。恐怕編譯器看不到它們 - 它們必須在jar的根目錄下。 BOOT-INF被Spring Boot使用。 – vempo

+0

這可能是正確的觀察。我想知道,我將如何在我的e2e測試中包含spring-boot應用程序?有什麼想法嗎? – Tr1gZer0

+1

看起來這個問題已經回答了我問的確切的東西:https://stackoverflow.com/questions/40089443/how-to-add-a-dependency-to-a-spring-boot-jar-in-another -project – Tr1gZer0

回答

1

不能將clarity-etl-1.0.0-SNAPSHOT.jar用作常規jar依賴項。請注意,此jar中的類是BOOT-INF/classes,Spring Boot使用該類,但被Java編譯器忽略。如果你的目標是測試Spring Boot應用程序(而不是使用jar作爲依賴),那麼Spring Boot提供了簡單的方法來完成它。 參見例如https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html

另一方面,如果將類包含在另一個應用程序中很重要,那麼How to add a dependency to a Spring Boot Jar in another project?可能會像您在評論中指出的那樣有所幫助。