题
我在使用Maven的Hudson Build Server上构建项目时需要Javax.Comm库。在我的项目pom.xml文件中,我具有这样的依赖性:
<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
----------
我究竟做错了什么?
-编辑-
我最终从中下载了java comm lib Oracle 并让我们的Maven Admin将其安装在我们的本地存储库上。正如下面的答案所指出的那样,由于Oracle的许可限制(以及在他们面前的太阳),公共存储库无法获得公共存储库。
解决方案
如果你看 这里, ,在“官方” 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>
这意味着您应该自己下载图书馆(URL在 <downloadUrl>
标签),然后 将其安装在您的本地存储库上 (甚至更好,将其部署在您的企业存储库中)。
有时,某些库(Oracle JDBC驱动程序是另一个示例)发生的情况,这是无法直接下载的,本质上是由于特定的许可...
其他提示
该罐子在公共存储库中不可用,可能是出于许可原因。
下载 通信API 并使用
mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm \
-Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] \
-DrepositoryId=[id]
实际上,Maven在公共存储库中找不到它...
info]无法找到资源'javax.comm:comm:jar:jar:2.0.3'在存储库java.net存储库中(http://download.java.net/maven/2)... [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]
由于许可限制Javax.comm软件包在任何公共存储库中都不可用,请参阅此处的进一步detais:
http://repo1.maven.org/maven2/javax/comm/comm/comm/2.0.3/comm-2.0.3.pom
POM还为您提供下载URL。您应该使用提供的链接下载罐子:
http://www.sun.com/download/products.xml?id=43208d3d
并将其放入”/javax/comm/comm/2.0.3/
“在您的公司存储库服务器中,像Artifactory这样的服务器为此提供Web-Frontend。
如果您没有存储库服务器,则可以将其放在您的 .m2/repository
主页文件夹中的目录。创建一个目录”/javax/comm/comm/2.0.3/
“那里并将POM从第一个链接和下载的JAR放在此文件夹中。但这仅适用于您的本地计算机。
您也可以在源控制中添加工件,并使用Maven-install-Plugin在构建之前将其安装在本地 这里.