2011-03-15 312 views
10

我需要在使用Maven構建我們的Hudson構建服務器上的項目時使用javax.comm庫。在我的項目pom.xml文件中我有這樣的依賴性:如何讓Maven下載javax.comm依賴項?

<dependency> 
    <groupId>javax.comm</groupId> 
    <artifactId>comm</artifactId> 
    <version>2.0.3</version> 
</dependency> 

我也讀的地方,我將不得不使用javax lib中的更好的運氣,如果我包括庫:

<repository> 
     <id>java.net repository</id> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 

,我做到了。其餘的我的pom.xml是非常標準和簡約的。

當我嘗試建立構建服務器我得到:

Downloading: [company repo]/content/groups/public//javax/comm/comm/2.0.3/comm-2.0.3.jar 
[INFO] Unable to find resource 'javax.comm:comm:jar:2.0.3' in repository java.net repository (http://download.java.net/maven/2) 
Downloading: [company repo]/content/groups/public//javax/comm/comm/2.0.3/comm-2.0.3.jar 
[INFO] Unable to find resource 'javax.comm:comm:jar:2.0.3' in repository central (http://repo1.maven.org/maven2) 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] Failed to resolve artifact. 

Missing: 
---------- 
1) javax.comm:comm:jar:2.0.3 

Try downloading the file manually from: 
    http://www.sun.com/download/products.xml?id=43208d3d 

Then, install it using the command: 
    mvn install:install-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file 

Alternatively, if you host your own repository you can deploy the file there: 
    mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id] 

Path to dependency: 
1) com.siriusit.fisherysolution.inmcsim:InmCSim:jar:1.0-SNAPSHOT 
2) javax.comm:comm:jar:2.0.3 

---------- 

我在做什麼錯?

CNC中

我結束了從Oracle下載Java通訊lib和有我們的Maven管理我們的本地倉庫安裝它。 正如下面的答案所指出的,由於Oracle(以及Sun之前)的許可限制,java comm lib在公開回購協議中不可用。

+0

它似乎是你的公司回購沒有攜帶javax.comm:comm:jar:2.0.3,要麼,或者它無法將請求轉發給某人做.. ..? – falstro 2011-03-15 10:40:58

+0

爲什麼當Maven在公司回購協議中找不到時,Maven會在公開回購協議中找到它? – Svante 2011-03-15 10:45:54

+1

,因爲它沒有配置爲在那裏。這是公司的標準配置,能夠監視/控制正在使用的內容(授權問題是此處引發關注的主要原因)。您應該請求某人將其添加到公司回購協議中,否則您可能會在法律部門遇到麻煩。 – falstro 2011-03-15 10:50:06

回答

9

如果你看看here,在「官方」的Maven 2倉庫,你會看到,在pom.xml文件,您的庫:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>javax.comm</groupId> 
    <artifactId>comm</artifactId> 
    <version>2.0.3</version> 
    <name>Java Communications API</name> 
    <description> 
     The Java Communications API is a Java extension that facilitates developing platform-independent 
     communications applications for technologies such as Smart Cards, embedded systems, and point-of-sale 
     devices, financial services devices, fax, modems, display terminals, and robotic equipment. 
    </description> 
    <url>http://java.sun.com/products/javacomm/</url> 
    <distributionManagement> 
     <downloadUrl>http://www.sun.com/download/products.xml?id=43208d3d</downloadUrl> 
    </distributionManagement> 
    <dependencies></dependencies> 
</project> 

這意味着你必須自己下載庫(該在<downloadUrl>標籤中給出URL),然後install it on your local repository(或者更好,將其部署到企業存儲庫中)。

這與一些庫(Oracle JDBC驅動程序是另一個例子),它們不提供直接下載,因爲特定許可證的本質時有發生......

+0

謝謝,非常好的答案。 – Svante 2011-03-15 10:57:36

+0

http://www.sun.com/download/products.xml?id=43208d3d - 鏈接已死 – 0x6B6F77616C74 2017-03-06 15:44:44

3

其實行家沒有找到它的公開回購...

[INFO]無法在存儲庫java.net存儲庫(http://download.java.net/maven/2) 中找到資源'javax.comm:comm:jar:2.0.3'。 .. [INFO]無法在存儲庫中心找到資源'javax.comm:comm:jar:2.0.3'(http://repo1.maven.org/maven2)

你必須從任何來源下載它,要麼在本地資源庫安裝:

mvn install:install-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file 

或將其部署到貴公司倉庫(如果有的話):

mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]  
+0

謝謝你,非常好的答案。 – Svante 2011-03-15 10:58:41

1

由於許可限制javax.comm包不在任何公共的資源可用,在這裏看到進一步detais:

http://repo1.maven.org/maven2/javax/comm/comm/2.0.3/comm-2.0.3.pom

在P OM還爲您提供下載網址。你應該使用所提供的鏈接下載JAR:

http://www.sun.com/download/products.xml?id=43208d3d

,並將其放置在你的企業「/javax/comm/comm/2.0.3/」資源庫服務器,像artifactory的服務器提供了一個網絡的前端這一點。

如果您沒有存儲庫服務器,則可以將其放置在您的主文件夾的.m2/repository目錄中。在那裏創建一個目錄「/javax/comm/comm/2.0.3/」,並將pom從第一個鏈接和下載的jar放置在該文件夾中。但是這隻適用於你的本地機器。

+0

謝謝,非常好的答案。 – Svante 2011-03-15 10:58:05

4

該jar無法在公共倉庫中使用,可能是因爲許可原因。

下載Communication API和使用

mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm \ 
    -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] \ 
    -DrepositoryId=[id] 
0

部署它,你也可以添加神器源控制和使用maven安裝,插件來構建之前localy安裝它作爲解釋here