Maven 是一个项目管理和构建自动化工具,是Apache Fundation下的一个Java项目。经常使用于Java项目中依赖管理nginx
下载直接去官网数据库
已经编译的二进制包 直接解压到安装目录便可apache
$ cd /path/to/Download $ tar -xf apache-maven-3.3.9-bin.tar.gz $ sudo mv apache-maven-3.3.9 /usr/local/ $ sudo ln -s /usr/local/apache-maven-3.3.9/bin/* /usr/bin/
maven会首先查询 pom.xml
引入的包,查找本地仓库是及工程目录,如不存在相应的包就会从maven的远程apache仓库下载vim
打包工程浏览器
mvn package
发布包到本地仓库缓存
mvn install
Nexus是一个强大的Maven仓库管理器,它极大地简化了本身内部仓库的维护和外部仓库的访问。利用Nexus你能够只在一个地方就可以彻底控制访问 和部署在你所维护仓库中的每一个Artifact。Nexus是一套“开箱即用”的系统不须要数据库,它使用文件系统加Lucene来组织数据。Nexus 使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,经过m2eclipse与Eclipse集成使用。Nexus支持WebDAV与LDAP安全身份认证。 Nexus分为专业收费的Nexus Pro与免费的Nexus OSS两个版本。本文以Nexus OSS为主体安全
下载Nexus OSS Nexus OSS 3.0 已经不支持Maven格式,因此这里咱们下载 2.x 版本, 下载地址bash
安装Nexus OSSeclipse
$ cd /path/to/Downloads $ tar -xf nexus-2.14.1-01-bundle.tar.gz $ cd nexus-2.14.1-01-bundle $ sudo mv nexus-2.14.1-01 /usr/local/ # 创建仓库存放目的 $ sudo mkdir /Data $ sudo mv sonatype-work /Data/ # 创建bin运行软链 # sudo ln -s /usr/local/nexus /usr/local/nexus-2.14.1-01 # sudo ln -s /usr/loca/nexus-2.14.1-01/bin/nexus /usr/local/bin/
配置Nexus OSSmaven
$ cd /usr/local/nexus-2.14.1-01/conf $ sudo vim nexus-propertities # 修改如下内容 nexus-work=/Data/nexus-repos/sonatype-work/nexus
测试运行
$ nexus start # 中止 $ nexus stop # 重启 $ nexus restart
浏览器打开http://localhost:8081/nexus
,便可看到nexus oss的欢迎界面
登陆用户:admin,默认密码:admin123,登陆后可在我的中心修改。
nginx反代方式
$ cd /path/to/nginx/conf/vhosts $ sudo vim nexus.local.me.conf # 内容以下: server { server_name nexus.aeonluck.me; location / { proxy_pass http://127.0.0.1:8081; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
添加本地host
# sudo vim /etc/hosts # 增长如下内容 127.0.0.1 nexus.local.me
测试反代
$ sudo nginx -s reload
浏览器打开http://nexus.local.me/nexus
便可见到nexus oss欢迎界面
Nexus的仓库分为如下几种:
首先,咱们要对几个重要仓库的配置进行修改,如 central
,Apache Snapshots
等,你也能够本身添加外部仓库。
小提示:
修改Maven配置,加入私库
$ vim ~/.m2/settings.xml # servers 内增长咱们的私库用户 <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> # mirrors增长私库 <mirror> <id>nexus</id> <name>Local nexus repo</name> <url>http://nexus.aeonluck.me/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror>
特别要注意的是:
必定要配置为 <mirrorOf>*</mirrorOf>
,即让全部的仓库都先通过私库,这样能够将远程下载的包缓存到本地
小提示:
添加个国内仓库 默认的apache的仓库下载速度比较慢,这里选择阿里云的Nexus仓库
$ vim ~/.m2/setting2.xml # 在mirrors中增长如下内容 # 注意,位置于咱们的私库以后,不然私服不能缓存到下载的包。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
关于Maven的mirror:
通常状况下,一个使用Maven的Java团队,都会有本身的项目仓库,当开发完成相应的功能以后,都会发布相应的jar/war包到私服。供其它项目成员使用
发布配置 在Maven工程的pom.xml中增长如下内容
<!-- 工程自述 --> <groupId>org.aeonluck</groupId> <artifactId>org.aeonluck.hello</artifactId> <packaging>jar</packaging> <version>0.1.0-SNAPSHOT</version> <!-- 发布配置 --> <distributionManagement> <repository> <id>snapshots</id> <name>Snapshots</name> <url>http://nexus.local.me/nexus/content/repositories/snapshots/</url> </repository> </distributionManagement>
重要提示:
snapshot
的仓库时,工程自述说明小节中的 <version>
,须要带上后缀 SNAPSHOT
,不然会当成 release
发布。会收到 400 Bad Request
错误。<url>
地址必定要区分清楚。并在 release
与 snapshot
仓库里配置不一样的地址。此外,id、name 要与Nexus中仓库的配置 configuration 中的内容一致。发布jar到的私库
$ cd /path/to/myproject $ mvn deploy
包发布以后,咱们便可在Nexus OSS的管理仓库中看到咱们刚才发布的包
小提示
$ mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar # 发布到本地仓库 mvn install:install-file -DgroupId=com.bea.xml -DartifactId=jsr173-ri -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] # 发布到私服 mvn deploy:deploy-file -DgroupId=com.bea.xml -DartifactId=jsr173-ri -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] -Durl=[url] -DrepositoryId=[id]