gpt4 book ai didi

java - Maven 程序集插件 : add a file into a dependency jar

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:06:59 26 4
gpt4 key购买 nike

有一个 maven 模块,比如 prj-package-module,使用 maven-assembly-plugin 将项目 Artifact 打包到一个 tar 文件中。在 prj-package-module/pom.xml 中也添加了 jar 作为依赖,并打包到 tar 文件中。

现在的要求是在打包到 tar 文件之前将文件 prj-pakacge-module/src/main/resources/file.xml 添加到这些依赖项 jar 之一。我怎样才能做到这一点?

编辑:该文件是一个 JNLP,其中动态添加了依赖 jar 列表。出于安全原因,Javaws 还要求为 JNLP 文件添加一个 jar 并对该 jar 进行签名。这就是我遇到问题的地方。

最佳答案

这是一个动态解压现有依赖项的 Maven 解决方案,将资源添加(复制)到解压的文件夹,重新打包(jar)漏洞,并因此获得初始 jar 的修改副本。

一个示例 pom 文件为 junit 依赖项执行此操作:

<build>
<plugins>
<!-- unpack step -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>unpack</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<type>jar</type>
<outputDirectory>${project.build.directory}/unpack-tmp</outputDirectory>
<includes>**/*.class,**/*.xml</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>

<!-- add the additional resource step -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/unpack-tmp</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<include>test.properties</include>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

<!-- repack step -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>repack</id>
<phase>prepare-package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classesDirectory>${basedir}/target/unpack-tmp</classesDirectory>
<finalName>junit-modified</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

它实际上在做什么:

运行上面的示例,junit-modified.jar 文件将出现在 maven 项目的 target 文件夹中。

上述插件配置的顺序对于将步骤流视为同一阶段的一部分很重要。

然后,您有一个额外的文件要添加到您的 fat-jar,这确实是您可能正在寻找的修改后的 jar。


如果您不需要动态方法,更好的方法是只执行一次并拥有该依赖项的分类版本,如 this other SO post 中所述。 .

或者,将其移动到 Maven profile这样至少它不是默认构建的一部分。

关于java - Maven 程序集插件 : add a file into a dependency jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35203858/

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