当前位置:   article > 正文

微服务电商实战(四)maven私服与gitlab代码管理_gitlab和maven的关系

gitlab和maven的关系

一、简介

微服务开发中,一般会使用到maven私服和gitlab代码管理。

有些公司不提供外网给开发人员,因此访问maven中央仓库需要在局域网搭建一个maven私服,开发人员通过访问私服来上传与下载jar包,而私服有外网可以访问中央仓库。maven私服更方便管理和维护,且开发人员从私服拉取jar包更快。还有一点是若开发人员很多,在同一个ip频繁访问中央仓库拉取jar包,有可能这个ip会进入中央仓库黑名单。因此搭建maven私服很有必要。

一般开源项目可以用github做代码管理,若是不开源的话,需要创建私人仓库,但是是收费的。而gitlab是免费的,可以自己搭建一个来做代码管理。

 

 

二、基于Nexus3的maven私服

安装:docker搭建maven私服

 

创建仓库

 

 

 

如此便创建好了。

 

修改本地maven的settings.xml配置文件

添加server配置

  1. <server>
  2. <id>nexus-releases</id>
  3. <username>admin</username>
  4. <password>admin</password>
  5. </server>
  6. <server>
  7. <id>nexus-snapshots</id>
  8. <username>admin</username>
  9. <password>admin</password>
  10. </server>
  11. <server>
  12. <id>shop</id>
  13. <username>admin</username>
  14. <password>admin</password>
  15. </server>

添加mirrors配置

  1. <mirror>
  2. <id>nexus</id>
  3. <name>nexus Mirror chenshu repository</name>
  4. <url>http://47.98.183.103:8081/repository/maven-public/</url>
  5. <mirrorOf>*</mirrorOf>
  6. </mirror>
  7. <mirror>
  8. <id>shop</id>
  9. <name>shop repository</name>
  10. <url>http://47.98.183.103:8081/repository/shop/</url>
  11. <mirrorOf>shop</mirrorOf>
  12. </mirror>

配置profiles

  1. <profile>
  2. <id>jdk1.8</id>
  3. <activation>
  4. <activeByDefault>true</activeByDefault>
  5. <jdk>1.8</jdk>
  6. </activation>
  7. <properties>
  8. <maven.compiler.source>1.8</maven.compiler.source>
  9. <maven.compiler.target>1.8</maven.compiler.target>
  10. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  11. </properties>
  12. <repositories>
  13. <repository>
  14. <id>maven-public</id>
  15. <url>http://47.98.183.103:8081/repository/maven-public/</url>
  16. <releases>
  17. <enabled>true</enabled>
  18. </releases>
  19. <snapshots>
  20. <enabled>true</enabled>
  21. <updatePolicy>always</updatePolicy>
  22. </snapshots>
  23. </repository>
  24. <repository>
  25. <id>shop</id>
  26. <url>http://47.98.183.103:8081/repository/shop/</url>
  27. <releases>
  28. <enabled>true</enabled>
  29. </releases>
  30. <snapshots>
  31. <enabled>true</enabled>
  32. <updatePolicy>always</updatePolicy>
  33. </snapshots>
  34. </repository>
  35. </repositories>
  36. </profile>

 

ok,如此便配置好了,接下来我们用idea将我们的微信接口服务打包上传到maven私服试试。

 

首先在shop-parent项目的pom文件加入以下配置

  1. <repositories>
  2. <repository>
  3. <id>nexus</id>
  4. <name>Nexus Repository</name>
  5. <url>http://47.98.183.103:8081/repository/maven-public/</url>
  6. <snapshots>
  7. <enabled>true</enabled>
  8. </snapshots>
  9. <releases>
  10. <enabled>true</enabled>
  11. </releases>
  12. </repository>
  13. </repositories>
  14. <pluginRepositories>
  15. <pluginRepository>
  16. <id>nexus</id>
  17. <name>Nexus Plugin Repository</name>
  18. <url>http://47.98.183.103:8081/repository/maven-public/</url>
  19. <snapshots>
  20. <enabled>true</enabled>
  21. </snapshots>
  22. <releases>
  23. <enabled>true</enabled>
  24. </releases>
  25. </pluginRepository>
  26. </pluginRepositories>
  27. <distributionManagement>
  28. <repository>
  29. <id>nexus-releases</id>
  30. <name>Nexus Release Repository</name>
  31. <url>http://47.98.183.103:8081/repository/maven-releases/</url>
  32. </repository>
  33. <snapshotRepository>
  34. <id>nexus-snapshots</id>
  35. <name>Nexus Snapshot Repository</name>
  36. <url>http://47.98.183.103:8081/repository/maven-snapshots/</url>
  37. </snapshotRepository>
  38. </distributionManagement>

 

接下来执行打包操作

 

发现控制台报错了

  1. [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.2.6.RELEASE:repackage (repackage) on project shop-service-api-weixin: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:2.2.6.RELEASE:repackage failed: Unable to find main class -> [Help 1]
  2. [ERROR]
  3. [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
  4. [ERROR] Re-run Maven using the -X switch to enable full debug logging.
  5. [ERROR]
  6. [ERROR] For more information about the errors and possible solutions, please read the following articles:
  7. [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

出现这个错误的原因是,在shop-parent项目pom文件中含有以下配置:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. </plugin>
  7. </plugins>
  8. </build>

这个插件的作用是当运行“mvn package”进行打包时,会打包成一个可以直接运行的 JAR 文件,使用“Java -jar”命令就可以直接运行。一般的maven项目的打包命令,不会把依赖的jar包也打包进去的,只是会放在jar包的同目录下,能够引用就可以了,但是spring-boot-maven-plugin插件,会将依赖的jar包全部打包进去。

需要注意的是打包时会去扫描项目main方法入口,也就是说引入该配置,你就必须在项目src/main/java/下创建一个spring-boot启动类。

由于我们的微信接口服务是没有入口类的,所以报错了。

 

我们通过将这个插件的配置从shop-parent中删除,然后在shop-basics和shop-service-impl中添加这个插件的配置来解决。

 

接着我们继续执行打包操作。

发现打包成功了,而且日志显示上传jar包到了我们的maven私服。

打开我们的maven私服,也可以看到我们上传的jar包。

 

jar的version分为snapshot(开发版)和releases(稳定正式版)。

  • snapshot:每次都会从服务器拉取一个最新的版本使用,因此这种版本很适合开发过程中使用,当有bug或者调整,维护提交了之后,使用就会获取到最新的使用。
  • releases:当检测到本地的maven仓库有相应的版本之后,不会去服务器拉取,就直接使用本地的版本了。

 

 

三、gitlab

docker搭建gitlab

使用很简单,跟github类似。

 

 

github项目地址https://github.com/liazhan/shop-project/tree/c617ad6c8487eec54cd2c8a7e627af62172dbe14

版本号为c617ad6c8487eec54cd2c8a7e627af62172dbe14

 

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

闽ICP备14008679号