我们可以在项目的POM中配置仓库和插件仓库,当然如果我们想要所有的Maven项目都使用私服,可以在settings.xml中配置,但是settings.xml并不直接支持配置repositories和pluginRepositories,但是Maven提供了profiles下的profile可以让我们定义一系列的配置信息,然后指定其激活条件,能够定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对可以在pom.xml中使用,这里我们配置远程仓库的地址和插件仓库。
<profiles>
<profile>
<id>jdk8</id>
<activation>
<activebydefault>true</activebydefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerversion>1.8</maven.compiler.compilerversion>
</properties>
</profile>
<profile>
<id>nexusRep</id>
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<!-- snapshot默认是关闭的,需要手动开启 -->
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus pluginRepository</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<!--maven设置的远程中央工厂不能下载snapshots的jar,这里覆盖一下-->
<profile>
<id>centralProfile</id>
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<!--mirror设置url,这里不起作用-->
<url>https://repo1.maven.org/maven2/</url>
<layout>default</layout>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
但是Maven除了从Nexus上下载构件之外,还会时不时从中央仓库下载构件,然而这应该是Nexus的工作,所以我们需要配置一个镜像,用
<mirrorof>*</mirrorof>将Maven任何构件下载的请求都转发到私服中。
<mirrors>
<mirror>
<id>nexus</id>
<mirrorof>*</mirrorof>
<name>A Local Nexus Server</name>
<url>http://1localhost:8081/nexus/content/groups/public/</url>
</mirror>
</mirrors>
注意:在这里配置了镜像,那在<profiles>里配置的远程仓库的<url>就失效了,有效的是<releases>和<snapshots>元素。
当Maven需要下载发布版或者快照版构件的时候,他会首先检查我们配置的远程仓库中的<releases>和<snapshots>元素,看该类型的构件是否可以下载,如果可以下载,就转到镜像地址去下载。
上面的profile配置以后,还要进行激活,否则不生效
<!-- 激活 profile 配置 -->
<activeProfiles>
<!--<activeProfile>nexusProfile</activeProfile>-->
<activeProfile>centralProfile</activeProfile>
</activeProfiles>
使用Maven部署构件到Nexus:
在项目正常开发中,快照版本的构件可以部署到Nexus中策略为Snapshot的例如:maven-snapshots宿主仓库中,发布版本可以部署到Nexus中策略为Release的例如:maven-releases宿主仓库中,项目的POM文件配置如下:
<!-- 发布项目到nexus -->
<distributionManagement>
<repository>
<id>user-release</id>
<name>user release repo</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>user-snapshot</id>
<name>user snapshot repo</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
- ID名称必须要与settings.xml中Servers配置的ID名称保持一致。
- 项目版本号中有SNAPSHOT标识的,会发布到Nexus Snapshots Repository, 否则发布到Nexus Release Repository,并根据ID去匹配授权账号。
Nexus仓库对于匿名用户是只读的,所以为了能够部署构件,还需要在settings.xml文件中配置认证信息。
<server>
<id>user-release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>user-snapshot</id>
<username>admin</username>
<password>admin123</password>
</server>
- nexus-releases: 用于发布Release版本
- nexus-snapshots: 用于发布Snapshot版本
- 在项目POM.xml中设置的版本号添加SNAPSHOT标识的都会发布为SNAPSHOT版本,没有SNAPSHOT标识的都会发布为Release版本。
- SNAPSHOT版本会自动加一个时间作为标识,如:4.3.0-SNAPSHOT发布后为变成4.3.0-SNAPSHOT-20160712.114532-1.jar
参考
https://blog.csdn.net/hellow__world/article/details/71855883
分享到:
相关推荐
Nexus的使用不仅简化了开发流程,也有助于团队协作和持续集成环境的搭建。 总之,掌握Nexus构建Maven仓库的方法以及Maven的基本命令,是每个Java开发者必备的技能之一。这不仅可以优化开发流程,还能确保项目的稳定...
6. **RESTful API**:Nexus提供了丰富的API接口,便于自动化集成和扩展。 7. **权限管理**:可以对用户和团队设置访问控制,确保资源的安全。 8. **报表与监控**:提供了详细的使用报告和系统监控,便于了解仓库的...
它可以与Jenkins、GitLab CI/CD等工具集成,自动构建、测试和部署项目,确保软件的快速迭代和高质量发布。在DevOps实践中,Nexus扮演着重要角色,确保组件的版本控制和一致性,减少因依赖问题引发的错误。 总的来说...
详细介绍持续集成环境hudson+nexus+maven搭建
9. **与其他工具集成**:Nexus可以轻松集成到持续集成系统(如Jenkins、Travis CI)和版本控制系统(如Git),实现无缝协作。 在使用Nexus时,可能遇到的问题包括但不限于配置错误、权限问题、网络连接故障、版本...
**Nexus与Maven的集成** 在开发环境中,Maven通过配置Nexus作为其远程仓库,可以实现更快的依赖下载速度和更稳定的构建过程。开发者可以在Nexus中创建不同的仓库类型,如代理仓库(Proxy Repositories)来缓存公共的...
《Nexus Maven Repository Index详解与应用》 在Java开发领域,Maven作为一款强大的构建工具,广泛用于管理项目依赖。而Nexus作为一个企业级的Maven仓库管理器,更是为开发者提供了集中化、规范化的软件包存储和...
### Nexus搭建Maven私服指导手册 #### 一、Nexus使用背景 在现代软件开发过程中,Maven作为构建工具在Java项目中占据了重要的地位。Maven通过定义项目的对象模型(POM),仅需一个简单的命令就能实现构建和依赖...
Maven Nexus 私服构件示例是一个实用的教程,旨在帮助开发者理解如何在本地环境中搭建和使用...通过实践这个示例,你可以深入了解Maven与Nexus的结合使用,为你的项目构建一个安全、高效、自给自足的依赖管理体系。
### SVN-Jenkins-Nexus-Maven-Tomcat 持续集成构建调研报告 #### 定义与背景 持续集成(Continuous Integration, CI)作为一种软件开发实践,在敏捷开发中扮演着核心角色。它鼓励团队成员频繁地集成代码,通过自动...
"持续集成环境搭建" ...搭建一个完整的持续集成环境需要使用多种工具和技术,例如 Maven、Nexus、Jenkins 和 SVN 等。通过使用这些工具和技术,我们可以自动化构建、测试和部署软件,从而提高软件的质量和开发效率。
在实际使用中,Nexus还有其他优势,例如支持webDAV和LDAP安全身份认证,提供REST API以及与IDEA和Eclipse的集成。通过Nexus,你可以更好地控制和审计构件的发布,确保构建的稳定性和效率,同时避免中央仓库的过度...
3. **发布版本**:Nexus支持SNAPSHOT版本管理和正式版本发布,方便进行持续集成和版本控制。 通过以上步骤,你可以成功地搭建一个Maven私有服务器,利用Nexus实现高效的依赖管理和构建优化。记住,定期更新Nexus到...
2. **Maven集成**:Nexus与Maven紧密配合,作为Maven项目的默认仓库,帮助开发者管理依赖关系,提供离线缓存,以及发布自定义构建到私有仓库。它使得团队可以在内部网络中轻松地共享和检索组件,而无需频繁连接到...
4. **与Maven集成**:要配置Maven以使用Nexus,需在`$user$/.m2/settings.xml`文件中添加以下配置: ```xml <id>normal <active>true <protocol>http</protocol> <username>deployment <password>deploy...
** Maven 私服 Nexus 最新版本 2.14 知识详解 ** Maven 是一个广泛使用的项目管理和综合工具,它通过管理项目的构建、依赖关系以及发布等流程,简化了 Java 应用的开发过程。Nexus 是 Sonatype 公司推出的一款强大...
#### 五、Maven与Nexus的集成 1. **配置Maven的`settings.xml`文件**:在Maven的配置文件中添加Nexus私有仓库的信息。 2. **部署项目至Nexus仓库**:在Maven项目的POM文件中配置部署信息,将编译后的构件部署至Nexus...
5. **Nexus与Maven的集成** - 修改团队成员的Maven settings.xml文件,配置镜像源为本地Nexus服务器,确保Maven构建时使用Nexus作为依赖解析的源头。 6. **优化Nexus** - 定期清理Nexus中的过期或不再使用的构件...