本地仓库设置、IDEA Maven全局设置
本地仓库设置
目的:将Maven下载的依赖包全部下载到指定的目录下,方便管理。
IDEA Maven 全局设置
提示:全局设置仅还未生成 .idea 目录的项目有效,因此为了让此配置生效,若已有此目录,则请先删除。
依赖版本范围
maven项目中所依赖的jar包版本不是唯一特定的版本,可以使用版本范围设定,设定的规则见下表:
1.0 | x >= 1.0 * The default Maven meaning for 1.0 is everything (,) but with 1.0 recommended. Obviously this doesn’t work for enforcing versions here, so it has been redefined as a minimum version. |
(,1.0] | x <= 1.0 |
(,1.0) | x < 1.0 |
[1.0] | x == 1.0 |
[1.0,) | x >= 1.0 |
(1.0,) | x > 1.0 |
(1.0,2.0) | 1.0 < x < 2.0 |
[1.0,2.0] | 1.0 <= x <= 2.0 |
(,1.0],[1.2,) | x <= 1.0 or x >= 1.2. Multiple sets are comma-separated |
(,1.1),(1.1,) | x != 1.1 |
<dependency> <groupId>com.falsec.nsm</groupId> <artifactId>fal-common</artifactId> <version>[1.4.0,1.5.0)</version> </dependency>
标识依赖版本为大于等于1.4.0,且小于1.5.0的jar包。
Nexus-Maven仓库管理器
介绍
私服具有降低中央仓库负荷、节省外网带宽、以及提高项目稳定性等优点。Sonatype Nexus 是当前最流行,使用最广泛的 Maven 仓库管理器。Nexus仓库属性和分类
下载地址:https://help.sonatype.com/en/download.html
Docker 安装参考:https://hub.docker.com/r/sonatype/nexus3
Docker 安装
docker pull sonatype/nexus3:3.66.0 mkdir /home/nexus-data && chown -R 200 /home/nexus-data docker run -d -p 8081:8081 --name nexus -v /home/nexus-data:/nexus-data sonatype/nexus3:3.66.0 # 安装或重启都需要几分钟,可用下面命令打印日志查看安装进度, # 直到出现:Started Sonatype Nexus OSS 3.66.0-02, # 装好后,可以直接在浏览器里访问了:http://127.0.0.1:8081 docker container logs -f nexus # 停止时,请确保留出足够的时间让数据库完全关闭 docker stop --time=120 <CONTAINER_NAME>
登录
点击首页右上角的 Sign in 按钮登录,默认用户名为 admin,默认密码则保存在 /nexus-data/admin.password
文件中:
创建 Nexus 宿主仓库(hosted)
Releases仓库配置为 Disable redeploy、Snapshots仓库配置为 Allow redeploy
创建自定义匿名角色,支持 deploy
nexus默认2个账号admin和anonymous,为了给让开发正常使用并确保安全,可以为开发新建个角色develop,权限需要nx-repository-view-maven2-*-edit和read,建立develop账号捆绑develop角色即可实现对nexus软件包的上传下载。但是这里我为了简单,直接使用 anonymous 账号来演示了。
创建 nx-anonymous-custom 角色,添加 nx-repository-view-maven2-*-edit和read 权限即可实现 deploy 发布:
把新创建的角色 nx-anonymous-custom 设置到 anonymous 用户上即可:
配置参考:https://zhuanlan.zhihu.com/p/507608150?utm_id=0
mvn clean deploy 报错:Failed to transfer file xxx.jar with status code 400
这个问题是在创建 snapshot 仓库时没有修改 Version Policy 导致的:
CPU使用率竟98%
使用 sonatype/nexus3:3.66.0 镜像启 nexus 容器,发现CPU几乎跑满,这个问题暂不知道什么原因,先记录下,不要与生产环境其他服务一起部署:
FAQ
1 设置第三方依赖包中依赖scope值,由runtime到compile
我们在pom文件中添加 dependency时,如果不设置 scope,那么默认使用的是 compile,例如:
<dependency> <groupId>org.apereo.cas</groupId> <artifactId>cas-server-core-webflow</artifactId> <version>5.2.0</version> </dependency>
这个依赖包中,又包含了 org.apereo.cas:cas-server-core-util:jar:5.2.0:runtime,注意它的scope是 runtime:
mvn dependency:tree ...... ...... +- org.apereo.cas:cas-server-core-webflow:jar:5.2.0:compile [INFO] | +- org.apereo.cas:cas-server-core-api-ticket:jar:5.2.0:compile [INFO] | +- org.apereo.cas:cas-server-core-api:jar:5.2.0:compile [INFO] | | +- org.apereo.cas:cas-server-core-api-logout:jar:5.2.0:compile [INFO] | | \- org.apereo.cas:cas-server-core-api-validation:jar:5.2.0:compile [INFO] | +- org.apereo.cas:cas-server-core-util:jar:5.2.0:runtime [INFO] | | +- org.bitbucket.b_c:jose4j:jar:0.6.1:runtime [INFO] | | +- org.apereo.cas:cas-server-core-api-util:jar:5.2.0:runtime [INFO] | | +- org.apereo.cas:cas-server-core-api-web:jar:5.2.0:runtime [INFO] | | +- org.apache.shiro:shiro-core:jar:1.4.0:runtime [INFO] | | | +- org.apache.shiro:shiro-lang:jar:1.4.0:runtime [INFO] | | | +- org.apache.shiro:shiro-cache:jar:1.4.0:runtime [INFO] | | | +- org.apache.shiro:shiro-crypto-hash:jar:1.4.0:runtime [INFO] | | | | \- org.apache.shiro:shiro-crypto-core:jar:1.4.0:runtime [INFO] | | | +- org.apache.shiro:shiro-crypto-cipher:jar:1.4.0:runtime [INFO] | | | +- org.apache.shiro:shiro-config-core:jar:1.4.0:runtime [INFO] | | | +- org.apache.shiro:shiro-config-ogdl:jar:1.4.0:runtime [INFO] | | | \- org.apache.shiro:shiro-event:jar:1.4.0:runtime [INFO] | | +- com.google.zxing:core:jar:3.3.0:runtime [INFO] | | \- com.vdurmont:semver4j:jar:2.0.3:runtime ...... ......
同事直接使用它来在项目中写代码,提交后,导致我这边一片红:
解决方法很简单,将这个 runtime 改为 compile 就可以了: