当前位置:   article > 正文

使用Docker搭建Maven私服_docker方式安装maven

docker方式安装maven

一、前言

别再傻傻的使用软件包的形式去安装Nexus3了,现在是容器化的时代了。


二、安装过程

一条命令安装好Nexus3

docker run -d -p 8081:8081 --name nexus -v /usr/local/maven/apache-maven-3.6.0:/usr/local/maven sonatype/nexus3

容器启动完成后,等待Nexus3初始化好后,进入localhost:8081端口查看,出现以下的界面,证明我们安装好了。Nexus3默认的管理员账号密码是admin/admin123


三、推送我们的jar包

使用idea开发完成后,在pom文件进行如下的配置。

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.exmaple</groupId>
  6. <artifactId>testNexus</artifactId>
  7. <version>1.0-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <distributionManagement>
  10. <repository>
  11. <id>nexus</id>
  12. <name>maven-releases</name>
  13. <url>http://ip:port/repository/maven-releases/</url>
  14. </repository>
  15. <snapshotRepository>
  16. <id>nexus</id>
  17. <name>maven-snapshots</name>
  18. <url>http://ip:port/repository/maven-snapshots/</url>
  19. </snapshotRepository>
  20. </distributionManagement>
  21. </project>

将两个url中的ip和port改成自己的即可。

并修改maven安装目录中的conf/settings.xml,添加nexus的server。

注意:这两个repository中的id要和接下来配置的server的id一致。

  1. <servers>
  2. <server>
  3. <id>nexus</id>
  4. <username>admin</username>
  5. <password>admin123</password>
  6. </server>
  7. </servers>

接下来,在Terminal中输入mvn deploy,即可将jar包推送至maven-releases仓库中。

注意:此时的jar包的version为1.0-SNAPSHOT,最后就会推送至maven-snapshots。

若修改为1.0,或修改成1.0-RELEASE,则最后会推送到maven-releases仓库中。


四、从远程仓库拉取jar包

首先在pom中声明我们要拉取的包,即为刚才我们推送的包

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.exmaple</groupId>
  4. <artifactId>testNexus</artifactId>
  5. <version>1.0-SNAPSHOT</version>
  6. </dependency>
  7. </dependencies>

接着我们配置setting.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  5. <localRepository>本地maven仓库地址</localRepository>
  6. <pluginGroups>
  7. </pluginGroups>
  8. <proxies>
  9. </proxies>
  10. <servers>
  11. <server>
  12. <id>nexus</id>
  13. <username>admin</username>
  14. <password>admin123</password>
  15. </server>
  16. </servers>
  17. <mirrors>
  18. <mirror>
  19. <id>nexus</id>
  20. <name>nexus</name>
  21. <url>http://ip:port/repository/maven-public/</url>
  22. <mirrorOf>*</mirrorOf>
  23. </mirror>
  24. </mirrors>
  25. <profiles>
  26. <profile>
  27. <id>nexus</id>
  28. <repositories>
  29. <repository>
  30. <id>maven-public</id>
  31. <url>http://ip:port/repository/maven-public/</url>
  32. <releases>
  33. <enabled>true</enabled>
  34. </releases>
  35. <snapshots>
  36. <enabled>true</enabled>
  37. </snapshots>
  38. </repository>
  39. </repositories>
  40. </profile>
  41. <profile>
  42. <id>jdk-1.8</id>
  43. <activation>
  44. <activeByDefault>true</activeByDefault>
  45. <jdk>1.8</jdk>
  46. </activation>
  47. <properties>
  48. <maven.compiler.source>1.8</maven.compiler.source>
  49. <maven.compiler.target>1.8</maven.compiler.target>
  50. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  51. </properties>
  52. </profile>
  53. </profiles>
  54. <activeProfiles>
  55. <activeProfile>nexus</activeProfile>
  56. <activeProfile>jdk-1.8</activeProfile>
  57. </activeProfiles>
  58. </settings>

最后右键pom文件-Maven-reimport,则会拉取下来,如图所示。


五、批量推送本地Maven仓库的所有jar包

一般来说,我们在windows进行开发,Maven的本地仓库也是在windows上,而Nexus容器则运行在linux上。

我们先把本地Maven仓库里面的内容通过xftp复制到linux上的一个目录中,比如复制到repo中。

然后也是在repo中,新建脚本文件mavenImportBatch.sh文件,内容如下:

  1. #!/bin/bash
  2. # copy and run this script to the root of the repository directory containing files
  3. # this script attempts to exclude uploading itself explicitly so the script name is important
  4. # Get command line params
  5. while getopts ":r:u:p:" opt; do
  6. case $opt in
  7. r) REPO_URL="$OPTARG"
  8. ;;
  9. u) USERNAME="$OPTARG"
  10. ;;
  11. p) PASSWORD="$OPTARG"
  12. ;;
  13. esac
  14. done
  15. find . -type f -not -path './mavenImportBatch\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

赋予可执行权限:

chmod 777 mavenImportBatch.sh

执行脚本:

./mavenImportBatch.sh  -u admin -p admin123 -r http://ip:port/repository/maven-releases/

最后可以在maven-releases中看到,我们已经将本地所有的jar包都已经批量上传至远程仓库中了。

大功告成!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/866634
推荐阅读
相关标签
  

闽ICP备14008679号