Maven 入门
Maven依赖的optional元素
假如你的Project A的某个依赖D添加了<optional>true</optional>,当别人通过pom依赖Project A的时候,D不会被传递依赖进来
当你依赖某各工程很庞大或很可能与其他工程的jar包冲突的时候建议加上该选项,可以节省开销,同时减少依赖冲突
Maven 依赖中 scope 详解
https://www.jianshu.com/p/a9bd44a83dc5
maven中plugins和pluginmanagement的区别
版权声明:本文为CSDN博主「joenqc」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/joenqc/article/details/54910629
stackoverflow中讲的不错
http://stackoverflow.com/questions/10483180/maven-what-is-pluginmanagement
pluginmanagement标签一般用在父pom中,子元素可以包含plugins插件,比如
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement>
然后,在子pom文件中就可以这样使用:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> </plugins>
省去了版本、配置等信息,只需指定groupId和artifactId即可。
但是在父pom中,如果使用这个标签来包裹plugins插件,当在此项目根目录运行对应的mvn命令时,如果在子pom中没有直接像上面再次引用这个plugin,那么不会触发这个plugin插件,只有在子pom中再次引用了之后,才会在对应的子项目路径下触发这个plugin.
plugins和pluginManagement标签都需要在build标签中。
Maven 在 pom.xml 文件中配置 repositories 仓库
如果你希望在你的项目中使用独立的 repositories 。
例如,你希望配置使用自己的 https://maven.ossez.com/repository/internal 作为仓库。
例如,修改后的 pom.xml 文件如下:
<repository> <id>maven-ossez</id> <name>OSSEZ Repository</name> <url>https://maven.ossez.com/repository/internal</url> </repository> <pluginRepository> <id>maven-ossez</id> <name>OSSEZ Repository</name> <url>https://maven.ossez.com/repository/internal</url> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository>
Ubuntu IntelliJ Maven安装和配置
下载Maven包
maven3.x版本的jdk必须在1.7及以上,我的是jdk1.8
下载3.5.2版本apache-maven-3.5.2-bin.tar.gz
sudo tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /usr/local/
配置Maven镜像
cd /usr/BigData/maven/conf/ sudo gedit ./settings.xml #替换<mirrors> <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
配置环境变量
# sudo gedit ~/.bashrc #加入 export M2_HOME=/usr/local/apache-maven-3.6.3 export MAVEN_OPTS="-Xms256m -Xmx512m" export PATH=$PATH:$M2_HOME/bin #保存执行 # source ~/.bashrc
检查是否安装成功
mvn -version
修改IntellJ配置
Intellij IDEA ,File->Setting->左上角搜索maven
修改下三个目录

Always update snapshots:总是使用最新的快照
Nexus私服
简介
Maven是一个采用纯Java编写的开源项目管理工具, Maven采用了一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。
maven和ant都是软件构建工具(软件管理工具),maven比ant更加强大,已经取代了ant,jar包的声明式依赖描述。maven有jar包的仓库。svn是一个软件的版本控制工具,是一个协同开发工具。svn的仓库存放的是项目的源码,历史版本的备份,声明每次版本的修改情况。
私服搭建场景
有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。
如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服。
基于Docker安装Nexus
docker hub地址:https://hub.docker.com/r/sonatype/nexus3
docker 方式启动
sudo docker pull sonatype/nexus3 docker run -d -p 8081:8081 --name nexus sonatype/nexus3
docker-compose 方式启动
# cat docker-compose.yml version: '3.1' services: nexus: restart: always image: shifudao/nexus3 container_name: nexus ports: - 8081:8081 volumes: - /usr/local/docker/nexus/data:/nexus-data
在项目中使用私服
在Maven settings.xml中添加Nexus认证信息
<server> <id>nexus-release</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server>
Snapshots与Releases的区别
- nexus-release:用于发布Release版本
- nexus-snapshots:用于发布snapshot版本(快照版)
Release版本与Snapshot定义如下
- Release: 1.0.0/1.0.0-Release
- Snapshot:1.0.0-Snapshot
在项目pom.xml中设置的版本好添加SNAPSHOT标识的都会发布为Snapshot版本,没有Snapshot标识的发布为Release版本
配置自动化部署
上传到私服
在pom.xml中添加如下代码:
<distributionManagement> <repository> <id>nexus-release</id> <name>Nexus Release Repository</name> <url>http://127.0.0.1:8081/repository/maven-release</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Nexus Snapshot Repository</name> <url>http://127.0.0.1:8081/repository/maven-snapshots</url> </snapshotRepository> </distributionManagement>
注意事项:
- ID名称必须要与setting.xml中Servers配置的ID名称保持一致
- 项目版本号中有SNAPSHOT标识的,会发布到Nexus Snapshot Repository,否则发布到 Nexus Release Repository
部署到仓库
mvn deploy
配置代理仓库
项目中的依赖从私服下载
- 私服中没有,私服从中央仓库下载,然后从私服下载
<repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://127.0.0.1:8081/repository/maven-public</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Nexus Plugin Repository</name> <url>http://127.0.0.1:8081/repository/maven-public</url> <snapshots> <enabled>true</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories>
问题汇总
Incorrect username or password, or no permission to use the application.
原文地址:https://blog.csdn.net/shen_yun2017/article/details/95347665
默认密码登录:admin/admin123
初始登录密码就在‘’/nexus-data/admin.password’文件里面
find / -name 'admin.password'
登录成功后会被强制要求修改密码

浙公网安备 33010602011771号