2015-05-03 54 views
0

之內,並將其依賴關係作爲一個單獨的jar下載到內部的依賴關係中?將maven依賴關係作爲一個單獨的.jar下載到

我的使用情況:

下載(org.apache.felix.http.servlet-API:1.1.0),然後將其複製到一個文件夾。

從MVN倉庫(http://mvnrepository.com/artifact/org.apache.felix/org.apache.felix.http.servlet-api)可以得到它作爲一個單一的罐子。

在本地構建我使用Maven的依賴關係的插件:

  <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
       <execution> 
        <id>copy</id> 
        <phase>package</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>/Users/user/dev/fun/felix-framework-5.0.0/bundle</outputDirectory> 
         <overWriteReleases>false</overWriteReleases> 
         <overWriteSnapshots>false</overWriteSnapshots> 
         <overWriteIfNewer>true</overWriteIfNewer> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

現在,它複製org.apache.felix.http.servlet-API而不是作爲一個單獨的jar,但作爲2罐子的。第一個jar是(org.apache.felix.http.servlet-api),第二個jar是tomcat-servlet-api。在依賴關係的依賴列表中提到了這一點。

我怎樣才能下載並複製到一個文件夾org.apache.felix.http.servlet-api作爲一個單一的jar(與從mvn倉庫下載相同的格式)?

謝謝, 彼得

回答

0

這是庫沒有怎麼Maven的工作。就拿衆所周知SLF4J project的文件:

http://search.maven.org/#artifactdetails|org.slf4j|slf4j-api|1.7.12|jar

你注意,每個文件進行簽名由它的發佈者(*。ASC文件),並具有SHA1校驗。對二進制文件進行簽名可以相信二進制文件是根據其原始源代碼構建的,並且校驗和使您可以驗證二進制文件在傳輸過程中是否被篡改。

希望這可以解釋爲什麼構建「超級罐子」(包含所有依賴關係的罐子)會由軟件的原始發佈者完成。如果Maven存儲庫要「按需」執行此操作,則生成的二進制文件將具有不同的校驗和,並且不符合其簽名。

不同的意見,但我認爲你更好,包括第三方依賴作爲離散和單獨的文件。它使逆向工程更容易(文件校驗和可以用來查找Maven回購並確定項目和版本。我曾經在一個非常古老的Java項目中這樣做過),有時候有許可條件允許鏈接的圖書館,但不包括在內。

結論可執行JAR可以使用「ClassPath」清單條目引用它們的依賴關係。有一個Maven插件,可以幫助你創建一個這樣的罐子:

https://maven.apache.org/shared/maven-archiver/examples/classpath.html

PS 還有用於創建uberjars所以很多選項的插件。