`

nexus与maven集成

 
阅读更多
我们可以在项目的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构建maven仓库总结(完善版2)

    Nexus的使用不仅简化了开发流程,也有助于团队协作和持续集成环境的搭建。 总之,掌握Nexus构建Maven仓库的方法以及Maven的基本命令,是每个Java开发者必备的技能之一。这不仅可以优化开发流程,还能确保项目的稳定...

    maven3.8.3+nexus3.34.zip

    6. **RESTful API**:Nexus提供了丰富的API接口,便于自动化集成和扩展。 7. **权限管理**:可以对用户和团队设置访问控制,确保资源的安全。 8. **报表与监控**:提供了详细的使用报告和系统监控,便于了解仓库的...

    nexus+maven.zip

    它可以与Jenkins、GitLab CI/CD等工具集成,自动构建、测试和部署项目,确保软件的快速迭代和高质量发布。在DevOps实践中,Nexus扮演着重要角色,确保组件的版本控制和一致性,减少因依赖问题引发的错误。 总的来说...

    持续集成环境hudson+nexus+maven搭建文档

    详细介绍持续集成环境hudson+nexus+maven搭建

    nexus-maven

    9. **与其他工具集成**:Nexus可以轻松集成到持续集成系统(如Jenkins、Travis CI)和版本控制系统(如Git),实现无缝协作。 在使用Nexus时,可能遇到的问题包括但不限于配置错误、权限问题、网络连接故障、版本...

    nexus+maven

    **Nexus与Maven的集成** 在开发环境中,Maven通过配置Nexus作为其远程仓库,可以实现更快的依赖下载速度和更稳定的构建过程。开发者可以在Nexus中创建不同的仓库类型,如代理仓库(Proxy Repositories)来缓存公共的...

    nexus-maven-repository-index.zip

    《Nexus Maven Repository Index详解与应用》 在Java开发领域,Maven作为一款强大的构建工具,广泛用于管理项目依赖。而Nexus作为一个企业级的Maven仓库管理器,更是为开发者提供了集中化、规范化的软件包存储和...

    Nexus搭建Maven私服指导手册

    ### Nexus搭建Maven私服指导手册 #### 一、Nexus使用背景 在现代软件开发过程中,Maven作为构建工具在Java项目中占据了重要的地位。Maven通过定义项目的对象模型(POM),仅需一个简单的命令就能实现构建和依赖...

    maven nexus私服构件示例

    Maven Nexus 私服构件示例是一个实用的教程,旨在帮助开发者理解如何在本地环境中搭建和使用...通过实践这个示例,你可以深入了解Maven与Nexus的结合使用,为你的项目构建一个安全、高效、自给自足的依赖管理体系。

    SVN-Jenkins-Nexus-Maven-Tomcat持续集成构建调研报告

    ### SVN-Jenkins-Nexus-Maven-Tomcat 持续集成构建调研报告 #### 定义与背景 持续集成(Continuous Integration, CI)作为一种软件开发实践,在敏捷开发中扮演着核心角色。它鼓励团队成员频繁地集成代码,通过自动...

    持续集成环境maven+nexus+jenkins+svn搭建

    "持续集成环境搭建" ...搭建一个完整的持续集成环境需要使用多种工具和技术,例如 Maven、Nexus、Jenkins 和 SVN 等。通过使用这些工具和技术,我们可以自动化构建、测试和部署软件,从而提高软件的质量和开发效率。

    使用Nexus搭建Maven私服.docx

    在实际使用中,Nexus还有其他优势,例如支持webDAV和LDAP安全身份认证,提供REST API以及与IDEA和Eclipse的集成。通过Nexus,你可以更好地控制和审计构件的发布,确保构建的稳定性和效率,同时避免中央仓库的过度...

    nexus 搭建maven 私有服务器

    3. **发布版本**:Nexus支持SNAPSHOT版本管理和正式版本发布,方便进行持续集成和版本控制。 通过以上步骤,你可以成功地搭建一个Maven私有服务器,利用Nexus实现高效的依赖管理和构建优化。记住,定期更新Nexus到...

    sonatype-nexus-maven-linux-332

    2. **Maven集成**:Nexus与Maven紧密配合,作为Maven项目的默认仓库,帮助开发者管理依赖关系,提供离线缓存,以及发布自定义构建到私有仓库。它使得团队可以在内部网络中轻松地共享和检索组件,而无需频繁连接到...

    用Nexus做Maven私服全攻略

    4. **与Maven集成**:要配置Maven以使用Nexus,需在`$user$/.m2/settings.xml`文件中添加以下配置: ```xml &lt;id&gt;normal &lt;active&gt;true &lt;protocol&gt;http&lt;/protocol&gt; &lt;username&gt;deployment &lt;password&gt;deploy...

    maven私服nexus最新版本2.14

    ** Maven 私服 Nexus 最新版本 2.14 知识详解 ** Maven 是一个广泛使用的项目管理和综合工具,它通过管理项目的构建、依赖关系以及发布等流程,简化了 Java 应用的开发过程。Nexus 是 Sonatype 公司推出的一款强大...

    Dubbo视频教程--基础篇--第14节--持续集成篇--Maven私有库和本地库的安装与配置(Sonatype Nexus + Maven)2.pdf

    #### 五、Maven与Nexus的集成 1. **配置Maven的`settings.xml`文件**:在Maven的配置文件中添加Nexus私有仓库的信息。 2. **部署项目至Nexus仓库**:在Maven项目的POM文件中配置部署信息,将编译后的构件部署至Nexus...

    使用Nexus搭建本地maven服务器

    5. **Nexus与Maven的集成** - 修改团队成员的Maven settings.xml文件,配置镜像源为本地Nexus服务器,确保Maven构建时使用Nexus作为依赖解析的源头。 6. **优化Nexus** - 定期清理Nexus中的过期或不再使用的构件...

Global site tag (gtag.js) - Google Analytics