2016-09-20 62 views
-1

我想解決所有依賴關係,使我可以從命令提示符運行此jar的單個jar。我使用Maven的assembly:single但每當我這樣做,我得到一個問題maven程序集:單個不解決依賴關係

[ERROR] com.XXX.XXXX.XXX:XXX-XXX-XXX:jar:XXX 
[ERROR] 
[ERROR] from the specified remote repositories: 
[ERROR] A (http://XXXXX/, releases=true, snapshots=true), 
[ERROR] B (http://XXXX/, releases=true, snapshots=true), 
[ERROR] C (https://repo.maven.apache.org/maven2/, releases=true, snapshots=true 
), 
[ERROR] D (https://XXXXX, releases=false, snapshots=true) 
[ERROR] Path to dependency: 
[ERROR] 1) com.test.Report:myjar:jar:0.0.1-SNAPSHOT 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit 
ch. 
[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 rea 
d the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE 
xception 

這是我與 工作POM現在這些瓶子都已經解決,並且存在於Maven的依賴文件夾中。我可以從Eclipse運行整個項目,但需要將此jar包含到包含所有jar的客戶端。任何幫助表示讚賞。謝謝:)

+0

從命令調用那種方式沒有依賴關係解析... – khmarbaise

回答

0

好的。也許沒有人會看到這個答案,但我仍然想爲我未來的自己留下一張紙條。這個問題與我得到的異常不同。要運行任何plugin請確保<plugin>位於之內<build>(不在<pluginManagement>之下)。這樣做運行的插件和jar依賴關係形成了mvn install

0

一種方法是在你的pom.xml中使用「jar -with-dependencies」配置。這會將你所有的依賴打包在jar中。
對於如:

<build> 
    <plugins> 
     <!-- any other plugins --> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

另一種方法是使用maven shade plugin。 對於如:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.4.3</version> 
     <configuration> 
      <!-- put your configurations here --> 
     </configuration> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

Maven的樹蔭插件將基本建立結尾處有兩個罐子。第一個jar是隻包含源代碼的編譯類的普通jar。
第二個jar還將包含您編譯的類,但是它還將包含來自所有依賴項的類文件。這是你應該給你的客戶的罐子。