1.修改方法
maven容器模板中用的是中央仓库打包,但是我们打包需要用到私服。那么我们需要将私服配置到容器settings.xml中。
以 admin账号登录 在配置字典里找到 ks-devops-agent
将MavenSetting中mirror标签里配上私服地址:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirrors>
<mirror>
<id>***.repository</id>
<mirrorOf>*</mirrorOf>
<name>Localhost.</name>
<url>http://maven.***.com/repository/maven-public/</url>
</mirror>
<mirror>
<id>***.repository.release</id>
<mirrorOf>*</mirrorOf>
<name>Localhost.release</name>
<url>http://maven.***.com/repository/maven-releases/</url>
</mirror>
</mirrors>
<profiles>
</profiles>
</settings>
然后在执行mvn命令是加上就可以了。
mvn clean -gs /opt/apache-maven-3.5.3/conf/settings.xml package
2.问题原因
重点介绍下/opt/apache-maven-3.5.3/conf/settings.xml 这个目录怎么来的:
在官方文档:maven项目构建示例中:有介绍maven容器模板中maven的配置和版本以及如何查看settings.xml配置:
但是在修改完:配置字典里ks-devops-agent 后 mvn执行时仍然从中央仓库拉取依赖或者直接是走的本地仓库缓存根本不从远程仓库拉取。
从上图中的 mvn --version命令中获得启发,我可以在执行构建命令前,指定maven容器.此时容器内的环境和真正执行构建命令的容器是一样的。此时我查看mvn --version ,cat settings.xml 文件就是最终执行命令时使用的配置。
rm -rf /root/.m2/repository/net/sf # 拉取失败的依赖,删除本地仓库目录
mvn --version # 查看 maven信息
cat /opt/apache-maven-3.5.3/conf/settings.xml # 查看配置settings.xml 是 配置字典里ks-devops-agent 的配置
+ mvn --version
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: /usr/share/maven #这里的maven home 居然不是 官网介绍里的 maven配置 /opt/apache-maven-3.5.3
Java version: 11.0.13, vendor: Oracle Corporation, runtime: /usr/local/openjdk-11
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-172-generic", arch: "amd64", family: "unix"
cat该maven home中的settings.xml文件里面是默认的 中央仓库配置。
解决方法1(临时解决):
mvn clean -gs /opt/apache-maven-3.5.3/conf/settings.xml package
解决方法2(永久):
直接修改容器模板中settings.xml挂载位置为 :
/usr/share/maven/conf/settings.xml
修改方法:admin登录
找到 maven模板:
修改这个挂载位置为:/usr/share/maven/conf/settings.xml,这样就把 配置字典里ks-devops-agent 里的maven配置文件挂载到了maven home 里。在执行mvn命令时不再需要指定配置文件。