问题描述
使用gitlab-ci构建我的项目(带有open-jdk 11和Maven 3.6.3的Linux docker)时,我有一个奇怪的行为。
这个项目使用了我自己制作的Maven扩展插件。
如果我只是在gitlab-ci.yml中调用mvn -U clean install
,则构建失败,因为它找不到扩展插件cpp-package-type,因为它甚至没有尝试下载它:
$ mvn -U clean install
2274 [INFO] Scanning for projects...
Downloading from gitlab-maven: https://gitlab.com/api/v4/groups/XXXXXXX/-/packages/maven/mygroup/universe-parent/1.0-SNAPSHOT/maven-metadata.xml
Downloaded from gitlab-maven: https://gitlab.com/api/v4/groups/XXXXXXX/-/packages/maven/mygroup/universe-parent/1.0-SNAPSHOT/maven-metadata.xml (602 B at 660 B/s)
3983 [WARNING] The POM for mygroup.maven.plugin.cpp:cpp-package-type:jar:1.0-SNAPSHOT is missing,no dependency information available
Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar (169 kB at 445 kB/s)
4419 [ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Unresolveable build extension: Plugin mygroup.maven.plugin.cpp:cpp-package-type:1.0-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact mygroup.maven.plugin.cpp:cpp-package-type:jar:1.0-SNAPSHOT @
@
4426 [ERROR] The build could not read 1 project -> [Help 1]
4426 [ERROR]
4426 [ERROR] The project mygroup.jcpp:jcpp-parent:1.0-SNAPSHOT (/builds/metro-group/universe/jcpp/jcpp-parent/pom.xml) has 1 error
4427 [ERROR] Unresolveable build extension: Plugin mygroup.maven.plugin.cpp:cpp-package-type:1.0-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact mygroup.maven.plugin.cpp:cpp-package-type:jar:1.0-SNAPSHOT -> [Help 2]
但是,如果我先回到构建目录之外并自己下载插件,然后再返回到构建目录,则将下载工件,并通过构建:
build:
stage: build
script:
- "cd .."
- "mvn -U dependency:get -Dartifact=mygroup.maven.plugin.cpp:cpp-package-type:1.0-SNAPSHOT"
- "cd -"
- "mvn -U clean install"
在使用扩展插件时我怎么了?
我的settings.xml:
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<servers>
<server>
<id>gitlab-maven</id>
<configuration>
<httpHeaders>
<property>
<name>Job-Token</name>
<value>${env.CI_JOB_TOKEN}</value>
</property>
</httpHeaders>
</configuration>
</server>
</servers>
<profiles>
<profile>
<id>repos</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>gitlab-maven</id>
<!-- The id of the group is the root group. -->
<url>https://gitlab.com/api/v4/groups/XXXXXXX/-/packages/maven</url>
</repository>
</repositories>
</profile>
</profiles>
</settings>
项目的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>mygroup</groupId>
<artifactId>universe-parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>mygroup.jcpp</groupId>
<artifactId>jcpp-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<!-- Dependency used to provide the car (cpp archive) packaging type. -->
<groupId>mygroup.maven.plugin.cpp</groupId>
<artifactId>cpp-package-type</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- Tell Maven that the dependency contributes to the packaging type system ("extensions" tag). -->
<groupId>mygroup.maven.plugin.cpp</groupId>
<artifactId>cpp-package-type</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
我的gitlab-ci.yml:
variables:
MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
image: registry.gitlab.com/mygroup/openjdk-maven-with-settings
cache:
paths:
- .m2/repository
build:
stage: build
script:
- "cd .."
- "mvn -U dependency:get -Dartifact=mygroup.maven.plugin.cpp:cpp-package-type:1.0-SNAPSHOT"
- "cd -"
- "mvn -U clean install"
.verify: &verify
stage: test
script:
- 'mvn $MAVEN_CLI_OPTS verify'
except:
- master
# Verify merge requests
verify:
<<: *verify
deploy:
stage: deploy
script:
- "cd .."
- "mvn -U dependency:get -Dartifact=mygroup.maven.plugin.cpp:cpp-package-type:1.0-SNAPSHOT"
- "cd -"
- 'mvn $MAVEN_CLI_OPTS deploy'
only:
- master
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)