在全新安装期间,Maven无法下载扩展插件

问题描述

使用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 (将#修改为@)