gpt4 book ai didi

java - 在 Maven 构建期间将文件添加到 jar

转载 作者:搜寻专家 更新时间:2023-11-01 03:07:09 24 4
gpt4 key购买 nike

我正在尝试在执行 Maven 构建时向我的所有 jar 添加一个许可证文件。我有每个类文件的许可证,但我希望将 License.txt 添加到每个 jar 中的每个 META-INF 文件夹

我的项目有一个主 pom,它有六个模块,然后这些模块有自己的模块,最终到达一个生成/target/<.jar-file> 的项目。构建和类级别许可证正在运行,我只是想将物理 License.txt 添加到 META-INF 文件夹中。

我的文件存储(相对于主 POM)在/src/resources/src-license.txt 中。我真的需要自动化的方法来确保如果/当许可证发生变化时,我不必更新 50 个文件,我可以只更新一个,然后将其复制到其他位置。

我试过用

<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src/resources</directory>
<targetPath>/META-INF</targetPath>
<includes>
<include>src-license.txt</include>
</includes>
</resource>
</resources>
....
</build>

但这似乎并不能解决问题。我还尝试了一些替代输出路径的方法,例如 ${project.build.outputDirectory}/META-INF 或 */META_INF,但也无济于事。有没有人对如何实现这一目标有一些经验?谢谢

另外,我使用 maven-license-plugin 来确保每个类文件都粘贴了许可证信息,并且按预期运行。但同样,在类文件内部,我正在寻找每个 <*.jar>/META-INF/

中的外部 .txt 文件

最佳答案

使用父 relativePath 中的资源至少是困难的(如果你有一个复杂的目录结构怎么办?)。

一个简单而干净的方法可以是创建一个包含 src-license.txt 文件的单独模块。然后使其成为您的模块的依赖项并将其解压缩 (dependency:unpack-dependencies) @generate-resources 阶段,在 target/classes 中。

    <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-license</id>
<phase>generate-resources</phase>
<goals><goal>unpack</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.acme</groupId>
<artifactId>com.acme.license</artifactId>
<version>${project.version}</version>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

关于java - 在 Maven 构建期间将文件添加到 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18519390/

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