转自:http://book.huihoo.com/maven-the-definitive-guide/ch16s07s03.html
你的Maven项目可以依赖于一个构件,这个构件不能从中央Maven仓库或任何其它公开Maven仓库找到。有很多原因可能导致这种情形发生:这个构件可能是私有数据库的JDBC驱动如Oracle,或者你依赖于另一个JAR,它既不开源也无法免费获得。在这样的情况下,你就需要手动拿来这些构件然后发布到你自己的仓库中。Nexus提供宿主的"third-party"仓库,就是为了这个目的。
为了阐明发布一个构件至第三方仓库的过程,我们使用一个真实的构件:Oracle JDBC驱动。Oracle发布一个广泛使用的商业数据库产品,该产品带有一个中央Maven仓库没有的JDBC驱动。虽然中央Maven仓库在http://repo1.maven.org/maven2/com/oracle/ojdbc14/10.2.0.3.0/维护了一些Oracle JDBC驱动的POM信息,但这些只是指向Oracle站点的POM。如果你将下列的依赖添加到你的项目。
Example 16.6. Oracle JDBC JAR 依赖
<project> ... <dependencies> ... <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.3.0</version> </dependency> ... </dependencies> ... </project>
用这个依赖运行一个Maven构建,将会产生如下的输出:
$ mvn install
...
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) com.oracle:ojdbc14:jar:10.2.0.3.0
Try downloading the file manually from:
http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
Then, install it using the command:
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 \
-Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=/path/to/file
Alternatively, if you host your own repository you can deploy the file there: \
mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc14 \
-Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=/path/to/file \
-Durl=[url] -DrepositoryId=[id]
Path to dependency:
1) sample:sample:jar:1.0-SNAPSHOT
2) com.oracle:ojdbc14:jar:10.2.0.3.0
----------
1 required artifact is missing.
Maven构建失败了因为它不能在Maven仓库中找到Oracle JDBC驱动。要补救这种情况,你将需要发布Oracle JDBC构件至你的Nexus third-party仓库。为此,从http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html下载Oracle JDBC驱动,然后保存至文件ojdbc.jar
。使用以下命令发布该文件至Nexus:
$ mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc14 \ > -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=ojdbc.jar \ > -Durl=http://localhost:8081/nexus/content/repositories/thirdparty \ > -DrepositoryId=thirdparty ... [INFO] [deploy:deploy-file] Uploading: http://localhost:8081/nexus/content/repositories/thirdparty/\ com/oracle/ojdbc14/10.2.0.3.0/ojdbc14-10.2.0.3.0.jar 330K uploaded [INFO] Retrieving previous metadata from thirdparty [INFO] Uploading repository metadata for: 'artifact com.oracle:ojdbc14' [INFO] Retrieving previous metadata from thirdparty [INFO] Uploading project information for ojdbc14 10.2.0.3.0
在你运行mvn deploy:deploy-file之后,该构件会被发布至Nexus的third-party仓库。
相关推荐
2. **部署第三方库** 如果有第三方库不在 Maven 中央仓库,可以将其手动上传到 Nexus。首先,需要在 Nexus 界面中创建一个 hosted 仓库,然后通过 Maven 的 `deploy:deploy-file` 目标将 JAR 包上传。 **六、总结*...
官网下载的professional版:nexus-professional-2.15.1-02-bundle.zip 专业版 1.Nexus 简介 Nexus是Maven仓库管理器,也可以叫Maven...私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。
【标题】:“Nexus构建Maven仓库总结(完善版3)——第三方插件处理与应用” 在软件开发中,管理依赖关系是至关重要的,而Maven作为Java领域广泛使用的构建工具,通过其中央仓库帮助开发者方便地获取所需依赖。然而...
#### 部署第三方类库 1. **仓库列表**:在Nexus管理页面中,找到第三方类库仓库。 ![仓库列表](#图7-1仓库列表) 2. **第三方类库**:进入具体的第三方类库仓库页面。 ![第三方类库](#图7-2第三方类库) 3. **...
例如,Central仓库代理Maven中央仓库,3rd party用于部署第三方发布版本构件,Snapshots仓库用于存储内部快照版本,Releases仓库则用于部署发布版本构件。 5. **索引下载**:新建Nexus私有仓库时,确保Central仓库...
1. **Maven仓库管理**:Nexus作为Maven的仓库代理,可以代理公共的Maven中央仓库和其他第三方库,同时也可以作为内部私有仓库,存储企业自己的构件(JARs、WARs等)。这使得开发者无需直接连接到互联网即可获取所需...
存储库则用于发布自定义构件,如内部项目或第三方库。 1. **Nexus的安装与配置** - 解压“nexus-3.38.0-01-win64.zip”,通常会得到一个包含“sonatype-work”和“nexus-3.38.0-01”目录的结构。 - “sonatype-...
这里指定了一个名为“thirdparty”的仓库,通常用于存放第三方依赖。 ##### 3. 构件发布配置 ```groovy configurations { resultArchives } artifacts { resultArchives file: file('libs/dx.jar') } ...
使用Nexus,企业能够有效地管理私有和第三方的软件依赖,保证软件质量,降低维护成本。特别是对于那些使用Maven、Gradle等构建工具的Java项目,Nexus是不可或缺的组件。在配置了阿里云仓库的版本中,国内开发者可以...
- **搜索和下载依赖**:通过 Nexus 的图形用户界面或 API,开发人员可以搜索和下载 Maven 构件,包括公开仓库中的第三方库。 - **创建仓库组**:Nexus 支持将多个仓库组合成一个仓库组,简化了依赖管理,使得开发者...
### 构建私有Maven仓库使用Nexus的详尽指南 ...以上步骤详细介绍了如何使用Nexus和Maven构建私有仓库的过程,以及如何添加第三方构件和优化远程仓库配置。这些操作可以帮助团队更好地管理依赖关系,提高开发效率。
- **3rdparty**:用于存放无法从公共仓库获取的第三方发布的构件。 - **Apache Snapshots**:代理Apache Maven仓库中的快照版本构件。 - **Central**:代理maven中央仓库中发布的构件。 - **Central M1 shadow**...
2> 可自行进行构件的管理和维护,包括第三方构件以及项目模块中所依赖的自助开发的公共构件。 具体流程如下图所示: 在上图中,搭建私服后,所有的依赖从私服下载,私服会自动判定,若私服库里没有所需的资源,则...
5. **质量检查**:Nexus还可以集成第三方服务,如OWASP Dependency Check,对上传的构件进行安全扫描,帮助发现潜在的漏洞和依赖问题。 6. **RESTful API**:Nexus提供了RESTful API,允许通过编程方式与仓库进行...
在项目开发过程中,我们经常需要从 Maven 中央仓库和第三方 Maven 仓库下载构件,这个过程不仅加大了仓库的负载,也浪费了外网带宽。如果网速慢的话,还会影响项目的进度。很多情况下,项目的开发都是在内网进行的,...
1. **Maven仓库代理**:它可以作为本地代理,缓存远程Maven中央仓库和其他第三方仓库的JAR文件,提高开发者构建项目的速度。 2. **私人仓库托管**:团队可以将自定义的库、内部构件或私有依赖托管在Nexus上,确保...
- 创建不同的仓库类型,如hosted(托管仓库)用于存储自定义的构件,proxy(代理仓库)用于代理远程Maven中央仓库或其他第三方仓库。 - 管理用户权限,控制不同团队对仓库的访问。 - 配置自动同步,定期更新代理仓库...
Nexus是Sonatype公司推出的一款开源仓库管理器,它可以作为一个中央仓库,存储并管理你的Maven项目依赖,包括第三方库、自定义构件以及Snapshot版本。通过设置Nexus,你可以避免网络延迟问题,提高构建速度,同时也...
Nexus,由Sonatype公司开发,是一款强大的Maven仓库管理器,它为Java开发者提供了集中管理依赖、构件发布以及第三方库的功能。在Unix操作系统环境下,Nexus的部署和使用对于优化开发流程至关重要。本文将详细介绍...