gpt4 book ai didi

java - 仅使用测试库创建测试目录

转载 作者:太空宇宙 更新时间:2023-11-04 15:24:13 25 4
gpt4 key购买 nike

我面临这个问题:

我正在为我们的客户创建装配。在这个程序集中我基本上想要两个重要的目录:

  • lib/ 包含所有运行时范围项目依赖项(包括传递性)
  • test/ 包含所有测试范围依赖项(包括传递性),但不包含 lib 文件夹中已存在的依赖项

到目前为止,我最终得到了这个汇编文件(我只包含重要的部分):

<assembly>
<id>zip-with-lib-and-test</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
<useTransitiveDependencies>true</useTransitiveDependencies>
<useTransitiveFiltering>true</useTransitiveFiltering>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>

<dependencySet>
<outputDirectory>test</outputDirectory>
<unpack>false</unpack>
<includes>
<include>group:test-artifact1</include>
<include>group:test-artifact1</include>
</includes>
<useTransitiveDependencies>true</useTransitiveDependencies>
<scope>test</scope>
</dependencySet>
</dependencySets>
</assembly>

有了这个,我就有了带有命名 Artifact 的测试目录,但这些测试 Artifact 没有传递依赖项。

我需要像这样进行排除:如果您存在于 lib Artifact 中,则您将不会参加测试。我尝试使用 maven-dependency-plugin 执行此操作,但没有成功。

此处无法选择依赖项的确切列表,因为此程序集将位于多个 Artifact 上。

最佳答案

Assembly 插件创建一个 zip 存档(它也可以创建一个目录作为输出,但很麻烦),所以我将其留到最后一步。

  1. 为项目的运行时位置和测试依赖项声明两个属性(例如 runtime.dirtest.dir)。
  2. 添加两次 Maven 依赖插件执行,阶段 prepare-package :一个用于运行时依赖项(应使用 includeScope 选项)和 runtime.dir作为输出目录,另一个用于测试依赖项 test.dir作为输出目录。因此,您应该在runtime.dir中具有运行时+编译依赖关系。和运行时+编译+提供+测试(和系统,如果你碰巧有的话)在test.dir中.
  3. 现在是时候添加一些 groovy 脚本了 :) 您的脚本应该列出 test.dir 中的所有文件并为每个文件检查 runtime.dir 中是否存在此类文件;如果是,请从 test.dir 中删除此文件。作为在 Maven 中使用 groovy 脚本的示例,请参阅 my answer here .
  4. 使用程序集插件将所有内容打包到 zip 存档中。

关于java - 仅使用测试库创建测试目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20048396/

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