四时宝库

程序员的知识宝库

Maven发布公共jar包到私服仓库(maven上传jar包到本地仓库)

简介

一个使用maven制作框架包时,会有一个主项目,然后它有多个子项目框架组成,很少一个工具包一个工程,像springboot,springcloud都是这种结构,主项目用来管理一些依赖包的版本,这对于框架型项目来说是很必要的,而对于业务项目来说,因为目前都是推荐使用微服务的轻量方式,所以不建议用多项目绑定一个大项目的方式,而都是一个服务一个项目。

为什么要用远程仓库(私服)

如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件,这样就加大了中央仓库的负载和浪费了外网的带宽,如果网速慢的话还会影响项目的进程。为团队创建私服,可以让公司的团队共享一套构件,加快了项目搭建的进程。所以我们选择用Nexus创建私服。

部署nexus服务

为了演示,我们采用docker进行快速部署nexus服务,脚本如下

docker run --name nexus -it -d \
-p 18181:8081 \
-p 18182:8082 \
-v `pwd`/data:/nexus-data \
-v /etc/localtime:/etc/localtime:ro \
--restart unless-stopped \
sonatype/nexus3:latest

注意:我们这里映射的data目录需要赋予最大权限,不然访问会报权限错误

sudo chmod 777 data/

启动服务,访问页面第一次进入会让你修改密码

默认密码是在你安装的data目录下

pom.xml配置文件

<repositories>
        <repository>
            <id>nexus</id>
            <name>Nexus Repository</name>
            <url>http://172.16.10.54:18181/repository</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <releases>
                <updatePolicy>always</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <id>nexus</id>
            <url>http://172.16.10.54:18181/repository/maven-releases/</url>
        </pluginRepository>
    </pluginRepositories>
     <!--#将项目打包上传到nexus私服-->
    <distributionManagement>
          <!-- 两个ID必须与 setting.xml中的<server><id>nexus-releases</id></server>保持一致-->
        <repository>
            <id>nexus-releases</id>
            <url>http://172.16.10.54:18181/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>nexus-snapshot</id>
            <url>http://172.16.10.54:18181/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

setting.xml中的配置修改

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
	<pluginGroups>
	</pluginGroups>
	  <proxies>
	  </proxies>
	  <servers>
		<server>
			<id>nexus-releases</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
		<server>
			<id>nexus-snapshots</id>
			<username>admin</username>
			<password>admin123</password>
		</server>
	  </servers>					  
      <mirrors>
  <mirror>
    <id>maven-public</id>
    <name>maven-public</name>
    <url>http://172.16.10.54:18181/repository/maven-public/</url>
    <mirrorOf>central</mirrorOf>
  </mirror>
  </mirrors>
  <profiles>
    <profile> 
      <id>maven-public</id> 
      <repositories> 
          <repository> 
              <id>nexus-releases</id> <!--正式仓库id-->
              <!--name随便-->
              <name>Nexus Release Snapshot Repository</name> 
              <!--地址是nexus中repository(Releases/Snapshots)中对应的地址-->
              <url>http://172.16.10.54:18181/repository/maven-releases/</url>
              <releases>
                  <enabled>true</enabled>
              </releases> 
              <snapshots>
                  <enabled>false</enabled>
              </snapshots> 
          </repository>
          <repository>
              <id>nexus-snapshots</id>
              <url>http://172.16.10.54:18181/repository/maven-snapshots/</url>
              <releases>
                <enabled>false</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
              <updatePolicy>always</updatePolicy>
          </repository>
      </repositories>
      <pluginRepositories> <!--插件仓库地址,各节点的含义和上面是一样的-->
        <pluginRepository> 
          <id>nexus-releases</id> 
          <name>Nexus Release Snapshot Repository</name> 
          <url>http://172.16.10.54:18181/repository/maven-releases/</url>
          <releases>
              <enabled>true</enabled>
          </releases> 
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
        </pluginRepository> 
        <pluginRepository> 
          <id>nexus-snapshots</id>
          <url>http://172.16.10.54:18181/repository/maven-snapshots/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
          <updatePolicy>always</updatePolicy>
        </pluginRepository> 
      </pluginRepositories>  
    </profile> 
  </profiles>
  <!--激活配置-->
  <activeProfiles>
      <activeProfile>maven-public</activeProfile> <!--profile下的id-->
  </activeProfiles>
</settings>

测试

我们可以重新刷新导入下jar包依赖,然后去nexus服务器上查看

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接