gpt4 book ai didi

Maven - 依赖于组装的 zip

转载 作者:行者123 更新时间:2023-12-03 07:05:33 38 4
gpt4 key购买 nike

我正在尝试让项目 B 下拉(并解压)由项目 A 构建的 ZIP 并将其部署到远程存储库。

使用 maven-assembly-plugin 创建并附加 ZIP。 ,包装类型pom :

<artifactId>project-a</artifactId>
<name>ZIP</name>
<description>Used by Project B</description>
<packaging>pom</packaging>

...

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>distribution-package</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/scripts.xml</descriptor>
</descriptors>
<tarLongFileMode>gnu</tarLongFileMode>
</configuration>
</execution>
</executions>
</plugin>

尝试使用 maven-dependency-plugin 将其从项目 B 的 pom 中拉下来:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-scripts</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/staging</outputDirectory>
<stripVersion>true</stripVersion>
<artifactItems>
<artifactItem>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<overWrite>true</overWrite>
<type>zip</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>

失败并显示:[ERROR] Failed to execute goal on project ...: Could not resolve dependencies for project group:artifact:pom:version: Could not find artifact group:project-a:zip:version in nexus (http://...:8081/nexus/content/groups/public) -> [Help 1]

我认为这是因为我将项目 A 的打包指定为 pom而不是zip ,但是我无法指定 Project A 作为打包类型 zip因为它会导致:

[ERROR]     Unknown packaging: zip @ line 13, column 13

我在这里做错了什么还是这根本不可能?我只有一堆文件,我想将它们捆绑到一个 Artifact 中,并允许多个其他项目下载并解压它们以供使用。接受不同的建议...

我还检查了以确保组装的 zip 确实位于连接中。

已更新答案

为了其他人的利益,我缺少的是 <classifier>依赖项必须与 <id> 匹配大会的。注意哪里thisistheattachedartifactsclassifier在以下文件中指定。

scripts.xml(项目A):

<assembly>
<id>thisistheattachedartifactsclassifier</id>
<formats>
<format>zip</format>
</formats>

<fileSets>
<fileSet>
<directory>src/main/resources</directory>
...
</fileSet>
</fileSets>
</assembly>

pom.xml(项目 B):

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-scripts</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/staging</outputDirectory>
<stripVersion>true</stripVersion>
<artifactItems>
<artifactItem>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<classifier>thisistheattachedartifactsclassifier</classifier>
<overWrite>true</overWrite>
<type>zip</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>

最佳答案

欢迎来到 Stack Overflow :)。

你走在正确的道路上。你真正的问题是使用 zip。

以下配置没问题,对我来说效果很好。这是一个旧的(两年前),我不确定它是否符合最佳实践。但我知道这是有效的。

这使我可以在项目之间共享一些资源,尤其是单元测试。

压缩项目:

pom.xml

<groupId>com.mycompany</groupId>
<artifactId>cfg_dev</artifactId>
<version>1.1.0</version>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>cfg-main-resources</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
<configuration>
<descriptors>
<descriptor>/src/main/assembly/resources.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

程序集描述符:它将产生这个 Artifact :cfg_dev-1.1.0-resources.zip请注意

  1. 这是一个 zip 存档
  2. “分类器”是资源(如程序集名称)

    资源 压缩 错误的 src/主/资源

主要项目:

pom.xml

请注意

  1. 这取决于 zip 存档
  2. 依赖项“分类器”是资源(如之前的程序集名称)

    <!-- Unit test dependency -->
    <dependency>
    <groupId>com.mycompany</groupId>
    <artifactId>cfg_dev</artifactId>
    <version>${project.version}</version>
    <classifier>resources</classifier>
    <type>zip</type>
    <scope>test</scope>
    </dependency>

    ....

    <build>
    <testResources>
    <!-- Ressources habituelles -->
    <testResource>
    <directory>src/test/resources</directory>
    <filtering>true</filtering>
    </testResource>
    <!-- Unzipped resources from cfg_dev -->
    <testResource>
    <directory>${project.build.directory}/test-resources</directory>
    <filtering>true</filtering>
    </testResource>
    </testResources>

    <plugins>

    <!-- Unzip shared resources -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
    <execution>
    <id>unpack-cfg-test-resources</id>
    <goals>
    <goal>unpack-dependencies</goal>
    </goals>
    <phase>generate-test-resources</phase>
    <configuration>
    <outputDirectory>${project.build.directory}/test-resources</outputDirectory>
    <includeArtifactIds>cfg_dev</includeArtifactIds>
    <includeGroupIds>${project.groupId}</includeGroupIds>
    <excludeTransitive>true</excludeTransitive>
    <excludeTypes>pom</excludeTypes>
    <scope>test</scope>
    </configuration>
    </execution>
    </executions>
    </plugin>
    </plugins>

我希望这很清楚并且会对您有所帮助:)

关于Maven - 依赖于组装的 zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12298178/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com