您现在的位置是:首页 > 文章详情

Maven发布公司内部jar包到私有服务器

日期:2020-04-22点击:482

0.前言

在日常开发过程中,我们会遇到部分jar包属于公司内部使用不能外传,部分jar包属于其它公司提供,但是他们也不希望发布到中央仓库,这可造成了一定的混乱。虽然这些包可以本地安装。但是有条件的公司一般自己搭建maven 私有服务器。当我们有了一个私有服务器了,我们的打法就不同了。下面我就私有服务器作用的两部分来聊它们需要的配置。

1.作为镜像(伸手党)

一般说来,公司的私服也是定时拉取其它国内私服镜像,比如阿里云镜像。所以我们在配置的时候应该让中央仓库被我们的私服所代理。额外所需要jar包在项目的pom文件中配置。故在settings.xml文件中只应添加:

<mirrors> <mirror> <id>nexus3</id> <name>nexus3</name> <url>http://192.168.8.8:8888/repository/maven-public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> 

其中的192.168.8.8:8888是maven仓库的地址,每个公司都不一样的,如果不是自己搭建的,可以询问组内其他人员或组长。那么我们必然需要公司内部的jar包嘛,所以我们就要在自己的项目的pom文件中添加对应的仓库,假设我们需要一些快照jar包,我们就可以配置:

 <repositories> <repository> <id>nexus3-snapshots</id> <name>nexus3-snapshots</name> <url>http://192.168.8.8:8888/repository/maven-snapshots/</url> </repository> </repositories> 

别的公司给我们的jar包,我们也可以在Nexus Repository中手动上传。然后在特定项目中配置<repository>就可以了:

2.发布jar包(造物主)

2.1. 发布jar包的钥匙

由于我们要发布到公司内部的maven私服,就要对它进行保护。不能谁都能进行jar包发布,有一些人恶搞一些没用的jar包往里塞也允许,服务器就混乱了。我们也需要知道是谁发布了jar包,故我们最好是给每个程序员建立账号和密码。对于开启发布大门的钥匙,我们需要添加配置:

<servers> <server> <id>maven-releases</id> <username>henry</username> <password>henryPassword</password> </server> <server> <id>maven-snapshots</id> <username>henry</username> <password>henryPassword</password> </server> <server> <id>3rd_part</id> <username>henry</username> <password>henryPassword</password> </server> </servers> 

2.2. 管理可以发布的类型(发布门槛)

我们知道,我们的jar包是有快照和正式两种版本类型。快照的jar包可能会因为同事的催促发布到私有服务器上,但是又没有一个长期存在的价值。且查找某个版本时异常复杂因为匆忙发布往往忘记修改快照版本。此时就需要区分快照和稳定版本发布的配置。故我们需要在settings中配置:

<profiles> <profile> <id>nexus3</id> <repositories> <repository> <id>maven-public</id> <url>http://192.168.8.8:8888/repository/maven-public/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>maven-releases</id> <url>http://192.168.8.8:8888/repository/maven-releases/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>maven-snapshots</id> <url>http://192.168.8.8:8888/repository/maven-snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>3rd_part</id> <url>http://192.168.8.8:8888/repository/3rd_part/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven-public</id> <url>http://192.168.8.8:8888/repository/maven-public/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> <profile> <id>jdk-1.8</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> </profiles> 

最后不要忘了激活这个profile,激活了之后,在所有的maven build中都会应用它们的,防止自己出错。

 <activeProfiles> <activeProfile>nexus3</activeProfile> </activeProfiles> 

2.3.汇总

故对于发布一个jar包,你需要在settings.xml中配置:

<!-- 下面配置认证的信息,每当maven需要连接到一个服务器时需要认证信息了,都会在这里查一下。 --> <servers> <server> <id>maven-releases</id> <username>henry</username> <password>henryPassword</password> </server> <server> <id>maven-snapshots</id> <username>henry</username> <password>henryPassword</password> </server> <server> <id>3rd_part</id> <username>henry</username> <password>henryPassword</password> </server> </servers> <!-- 如下的配置一些maven 在build过程中的定制化的内容--> <profiles> <profile> <id>nexus3</id> <repositories> <repository> <id>maven-public</id> <url>http://192.168.8.8:8888/repository/maven-public/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>maven-releases</id> <url>http://192.168.8.8:8888/repository/maven-releases/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>maven-snapshots</id> <url>http://192.168.8.8:8888/repository/maven-snapshots/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>3rd_part</id> <url>http://192.168.8.8:8888/repository/3rd_part/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven-public</id> <url>http://192.168.8.8:8888/repository/maven-public/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> <profile> <id>jdk-1.8</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> </profiles> <activeProfiles> <activeProfile>nexus3</activeProfile> </activeProfiles> 

3.源码也发布(更高的精神追求)

当然了,没有我们项目权限的同事会抱怨:“你这个jar包对应的代码里一行注释都没有,我发现有问题也不好给你排查啊!”这个时候你可以慷慨激昂地安慰他:“我把源码发上去就是了,你Dowload Sources”。接下来你这样操作,入世未深的同事只能说一句:“🐂🍺!”

我们在非父项目的pom文件里添加插件:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>attach-sources</id> <phase>verify</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> 

然后在idea中你添加一个Run/Debug Configuration,用来进行源码的上传。

这样,你之后只需要选择这个配置执行就可以了。

4. 鸣谢

5.拓展阅读

原文链接:https://my.oschina.net/hengbao666/blog/3302210
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章