【发布时间】:2015-06-19 16:23:31
【问题描述】:
我有一种情况,我需要解压缩一个 spring jar 并用我的 .class 文件替换该包中的一个文件,然后将其重新打包为 jar。我知道这可以在 Maven 中完成。所以我创建了一个 maven 项目,并将 .java(要在 Spring jar 中替换)添加到它。这是我的项目结构。
这是我的pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<name>repackage</name>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.4.6</version>
<packaging>pom</packaging>
<build>
<plugins>
<!-- Unpacking -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6.SEC03</version>
<type>jar</type>
<overWrite>false</overWrite>
<outputDirectory>target</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<!-- Packing -->
<!-- <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classesDirectory>target</classesDirectory>
<classifier>sample</classifier>
</configuration>
</execution>
</executions>
</plugin>-->
</plugins>
</build>
</project>
我可以使用maven dependency plugin 解开弹簧罐的包装,并且我想出了如何使用maven-jar-plugin 将它装回罐中。我正在努力理解的部分 1)如何将我的 .java 文件转换为 .class 文件。由于包装是 pom 类型 <packaging>pom</packaging> 我无法编译 java 文件(JdkVersion.java)。如果成功创建类文件2)如何将此.class文件替换为解压的spring jar,因为我需要替换的文件位于/springpackage的子目录中
【问题讨论】:
-
最好是创建一个普通的 java 项目,您的 JdkVersion 文件可以在其中编译,并使用 maven-shade-plugin 过滤/替换/添加生成的 .class 文件到 final 阴影 jar...