Maven发布公司内部jar包到私有服务器
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.拓展阅读
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Argo 项目入驻 CNCF,一文解析 Kubernetes 原生工作流
作者 |遥鹭、郡宝 **导读:**近期,CNCF 技术监督委员会(Technical Oversight Committee,TOC)投票决定接受 Argo 作为孵化级别的托管项目。作为一个新加入的项目,Argo 主要关注于 Kubernetes 原生的工作流,持续部署等方面。 Argo 项目是一组 Kubernetes 原生工具集合,用于运行和管理 Kubernetes 上的作业和应用程序。它提供了一种在 Kubernetes 上创建工作和应用程序的三种计算模式 – 服务模式、工作流模式和基于事件的模式 – 的简单组合方式。所有的 Argo 工具都实现为控制器和自定义资源。 阿里云容器服务是国内早期使用 argo workflow 的团队之一。在落地生产过程中,解决了大量性能瓶颈,并且开发了较多功能回馈给社区,团队成员也是 Argo 项目 Maintainer 之一。 Argo 项目:面向 K8s 的工作流 DAG (Directed acyclic graph,有向无环图)是一个典型计算机图论问题,可以用来模拟有相互依赖关系的数据处理任务,比如音视频转码,机器学习数据流,大数据分析...
- 下一篇
【智能硬件DIY】使用手机控制房间的顶灯
【DIY背景】夏天蚊子比较多,于是买了一个全封闭的蚊帐。但是也有麻烦,每次都要先关灯,抹黑上床封闭蚊帐,挺麻烦的。于是就想用手机来控制顶灯的开关,这样就可以躺在床上开关灯了。 【技术要点】1、硬件:使用ESP8266模块作为网络和控制核心2、服务器:使用阿里云的物联网平台作为数据转发服务器3、控制端:使用java开发一个简单的安卓app程序,实现连接服务器、开灯、关灯、断开服务器四个功能。 【系统架构示意图】 【所需材料】1、ESP8266模块 2、继电器的底板,继电器最大负载250V10A 3、5V1A的电源适配器一个 4、USB转TTL模块一个 5、5.5/2.5 接线头 【DIY流程】1、准备好硬件 2、申请一个阿里云账户并开通物联网平台 3、编写嵌入式软件 4、使用USB转TTL模块将写好的嵌入式程序写入ESP8266芯片 5、用java编写一个简单的Android app 6、将继电器的底板、ESP8266模块以及点灯连接好 7、上电测试
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker快速安装Oracle11G,搭建oracle11g学习环境