`
hanqunfeng
  • 浏览: 1542140 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《Maven实战》学习笔记(3)--仓库配置

 
阅读更多

本地仓库配置
本地仓库用于存储从远程仓库下载到的包
默认路径~/.m2/repository/
可以在~/.m2/settings.xml中进行配置
<settings>
    <localRepository>D:\maven\repository\</localRepository>
</settings>


远程仓库配置
用于从远程下载依赖包
默认使用mavne中央仓库,该配置在$M2_HOME/lib/maven-model-builder-3.0.jar中的org/apache/maven/model/pom-4.0.0.xml中
 <repositories>
    <repository>
      <snapshots>
        <enabled>false</enabled>:不从仓库下载快照版本
      </snapshots>
      <id>central</id>
      <name>Maven Repository Switchboard</name>
      <url>http://repo1.maven.org/maven2</url>
    </repository>
  </repositories>


pom-4.0.0.xml是超级pom,所有pom都会继承。
每次部署编译时,如果在本地仓库中没有找到就会自动从远程仓库下载。

中央仓库不能满足要求时(因为有些包不在中央仓库中),可以配置多个远程仓库,比如JBOSS Repository:
<repositories>
        <repository>
            <id>jboss</id>
            <name>JBOSS Repository</name>
            <url>http://repository.jboss.org</url>
            <layout>default</layout>
            <releases>
                <enabled>true</enabled>:开启发布版构件下载支持,该例子中只会下载发布版
                <checksumPolicy>warn</checksumPolicy>:下载校验失败时提示警告,fail:让构建失败 ignore:忽略错误
                <updatePolicy>always</updatePolicy>:从远程仓库检查更新的频率,这里是每次构建都检查,
                                        默认值是daily,一天一次,never:从不检查,
                                        interval:x:每隔x分钟更新一次
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>


镜像仓库
可以在settings.xml中配置镜像仓库,这样可以获得更快的下载速度,比如:
 <mirrors>
    <mirror>
        <id>ibiblio.org</id>
        <name>ibiblio Mirror of http://repo1.maven.org/maven2/</name>
        <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
        <mirrorOf>central</mirrorOf>:*:匹配所有远程仓库,
                            external:*:匹配所有不在本机上的远程仓库(localhost和file的不匹配)
                            repo,repo2:匹配两个远程仓库,逗号分隔
                            *,! repo1:匹配所有远程仓库,repo1除外
                            本例中意为只匹配中央仓库,也就是说,所有向中央仓库的请求都使用该镜像
        <!-- United States, North Carolina -->
    </mirror>    
  </mirrors>
从网上找了一些镜像,发现大部分的都无法访问了,所以还是自己搭建私服吧。

仓库搜索服务
可以提供依赖的搜索,可以通过关键字,类名称,坐标等进行检索,找到自己需要的pom依赖配置
Sonatype Nexus:https://repository.sonatype.org/index.html#welcome
Jarvana:http://www.jarvana.com/jarvana/
MVNbrowser:http://www.mvnbrowser.com/index.html
MVNrepository:http://mvnrepository.com/


私服
Nexus:http://nexus.sonatype.org/downloads/
bundle版:自带了jetty容器,下载需要的版本即可,每个版本中都包含了所有平台的执行脚本,脚本地址在%nexus%/bin/jsw/下
    windows   linux
启动:nexus.bat     ./nexus console  默认使用8081端口,如:http://localhost:8081/nexus/  修改端口:%nexus%/conf/plexus.properties,找到application-port,修噶后重启nexus
停止:Ctrl+C           Ctrl+C
war版:需要部署到容器中,将war包部署到tomcat等容器中即可。
nexus配置方法:
在settings.xml中加入如下配置:
两种方式都可以:
1.镜像
<mirrors>
      <mirror>
      <id>nexus</id>:如果不配置镜像,则下载还会不时的访问中央仓库,所以这里使用镜像,*表示所有请求都转到nexus
      <mirrorOf>*</mirrorOf>
      <name>nexus mirror.</name>
      <url>http://192.168.12.115:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

2.profile
<profile>
        <id>nexus</id>
            <repositories>
                <repository>
                    <id>nexus</id>
                    <url>http://192.168.12.115:8081/nexus/content/groups/public</url>
                    <releases>
                        <enabled>true</enabled>
                        <checksumPolicy>warn</checksumPolicy>
                        <updatePolicy>always</updatePolicy>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                        <checksumPolicy>warn</checksumPolicy>
                        <updatePolicy>always</updatePolicy>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <url>http://192.168.12.115:8081/nexus/content/groups/public</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
  <activeProfiles>
    <activeProfile>nexus</activeProfile>:激活profiles
  </activeProfiles>
不过这种配置偶尔还是会访问中央仓库,所以可以结合镜像使用,让所有访问中央仓库的请求都转到nexus
<mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>central</mirrorOf>
            <name>nexus mirror.</name>
            <url>http://192.168.12.115:8081/nexus/content/groups/public</url>
        </mirror>
    </mirrors>

将自己的项目部署至远程仓库
比如使用Nexus私服时,可以在项目的pom中这样配置
<distributionManagement>
        <repository>
            <id>nexus-release</id>:正式版部署地址
            <name>Nexus Release Repository</name>
            <url>http://192.168.12.115:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshots</id>:快照版部署地址
            <name>Nexus Snapshots Repository</name>
            <url>http://192.168.12.115:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

Nexus对于匿名用户是只读的,所以需要在settings中配置认证信息,如下:
<servers>
  <server>
      <id>nexus-release</id>
      <username>admin</username>
      <password>123456</password>
    </server>
    <server>
      <id>nexus-snapshots</id>
      <username>admin</username>
      <password>123456</password>
    </server>
  </servers>

为了不影响各个项目团队间的发布,推荐为每个项目组建立独立的仓库并分配团队成员独立的权限,
比如nqcp团队,可以使用nqcp-releases仓库作为正式版的发布,使用nqcp-snapshots作为快照版本的发布。


分享到:
评论

相关推荐

    Maven入门实战笔记02-基础(2)

    总的来说,"Maven入门实战笔记02-基础(2)"很可能是对Maven基础操作的深入讲解,涵盖了项目创建、POM配置、依赖管理、生命周期和构建过程等内容,对于想要学习和掌握Maven的Java开发者来说,是一份非常实用的学习资料...

    Maven3实战笔记(整合)

    从给定的文件信息来看,标题与描述都指向了“Maven3实战笔记(整合)”,这表明文档主要聚焦于Maven3的实践应用与整合经验分享。Maven是Apache软件基金会维护的一个开源项目,是一个项目管理和综合工具,主要用于Java...

    Maven3实战笔记(全)

    《Maven3实战笔记(全)》是一本全面深入介绍Maven3的实践指南,由一位具有独特风格的作者撰写,以其风趣幽默的方式解析了Maven3的各种核心概念和使用技巧。这本书涵盖了从Maven的基础安装与配置,到复杂的仓库依赖...

    Maven3 学习笔记

    【标题】:“Maven3 学习笔记” 在软件开发领域,Maven 是一个非常重要的构建工具,尤其在Java世界中占据着主导地位。Maven3 是 Maven 的第三个主要版本,它增强了性能,提升了用户体验,并引入了更多现代化的构建...

    Maven3实战笔记.pdf

    标题中提及的“Maven3实战笔记”指向了Maven这款流行的Java项目管理和自动化构建工具的第三个主要版本。Maven自从引入以来,就极大地简化了Java项目的构建过程,提高了项目构建的标准化程度。它使用项目对象模型...

    Maven中文开发指南+实战教程+学习笔记

    **Maven实战教程** 1. **创建新项目** - 使用`mvn archetype:generate`命令创建一个新的Maven项目。 - 选择合适的archetype模板,根据提示输入项目信息。 2. **项目构建与调试** - 使用`mvn install`命令将项目...

    尚硅谷Maven课程笔记代码资源

    【尚硅谷Maven课程笔记代码资源】是一份全面学习Maven的资料集合,它涵盖了从基础到高级的各种知识点,旨在帮助开发者深入理解并熟练运用Maven进行自动化构建。该资源包含课件、源码和相关的笔记,使得学习过程更加...

    Maven实战笔记

    **Maven实战笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过一个统一的项目对象模型(Project Object Model,POM),使得开发者可以轻松地定义...

    经典JavaEE5规范学习笔记

    - Maven学习笔记:介绍了Maven的实战应用,包括环境配置、坐标和依赖、仓库管理、生命周期和插件、聚合、继承、反应堆、Nexus使用、测试、Hudson集成、Profile定制、项目站点生成和插件编写等主题。 - 学习Maven的...

    maven3含教程

    **正文** Maven3是一个强大的Java项目管理工具,由Apache软件基金会开发,它极大地简化了...通过"apache-maven-3.0.4"的使用和"Maven3实战笔记"的学习,开发者可以全面掌握Maven的精髓,更好地服务于软件开发工作。

    Maven学习资源打包汇总

    《Maven实战》是一本实践导向的书籍,涵盖了Maven在实际项目中的应用,包括设置环境变量、配置构建服务器、集成持续集成工具如Jenkins,以及使用Maven进行部署。此外,它还介绍了一些高级话题,如使用Maven进行敏捷...

    junit、maven、markdown、mybatis工具书

    书中还涵盖了设置Maven仓库、解决依赖冲突以及优化构建速度等实用技巧。 【Markdown语法说明(简体中文版)】 Markdown是一种轻量级的标记语言,常用于编写文档和笔记,因其简洁易读的语法而受到欢迎。《Markdown...

    k8s1.16的jenkins部署java项目cicd(cd手动)-kubernetes安装包和详细文档笔记整理

    5. **配置Jenkins**:设置全局变量,创建Job来监听代码仓库,配置构建触发器,添加构建步骤(如Maven编译、单元测试等)。 6. **创建Kubernetes资源**:为Java应用创建Deployment、Service和Ingress资源,定义应用的...

    DIO-Bootcamp-Inter-Java-Developer:DIO-数字创新一号(新兵训练营)

    【压缩包子文件的文件名称列表】:“DIO-Bootcamp-Inter-Java-Developer-master”通常代表这是一个Git仓库的克隆或下载,其中可能包含训练营的所有资源,如源代码、笔记、教程、练习项目和解决方案等。学员可以通过...

    毕业设计:基于SpringBoot的在线教育系统.zip

    通过这个项目,学习者可以深入理解SpringBoot的实战应用,熟悉Maven或Gradle构建工具,掌握MySQL、Redis等数据库的使用,了解前端技术如HTML、CSS、JavaScript和相关框架(如Vue.js或React.js),以及如何整合前后端...

    NotasParaTec:Proyeccto NotasParaTec

    7. **pom.xml** - 如果项目使用Maven构建,这是一个配置文件,定义了依赖关系、构建过程等。 8. **build.gradle** 或 **settings.gradle** - 如果项目使用Gradle构建,这是项目的构建配置。 在学习NotasParaTec项目...

    feibai_study

    这个压缩包的名字 "feibai_study-master" 暗示这可能是一个Git仓库的主分支,通常用于开源项目或者个人学习笔记的存储。在这样的仓库中,我们通常会找到源代码、文档、测试用例以及项目的配置文件等。 Java是一种...

Global site tag (gtag.js) - Google Analytics