【问题标题】:How to unjar, and edit source and jar it back using maven?如何解压缩,编辑源代码并使用 Maven 将其重新压缩?
【发布时间】: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 类型 &lt;packaging&gt;pom&lt;/packaging&gt; 我无法编译 java 文件(JdkVersion.java)。如果成功创建类文件2)如何将此.class文件替换为解压的spring jar,因为我需要替换的文件位于/springpackage的子目录中

【问题讨论】:

  • 最好是创建一个普通的 java 项目,您的 JdkVersion 文件可以在其中编译,并使用 maven-shade-plugin 过滤/替换/添加生成的 .class 文件到 final 阴影 jar...

标签: java maven package unpack


【解决方案1】:

您不必这样做。 Spring 是一个开源项目,只需克隆其源代码https://github.com/spring-projects/spring-framework?files=1 并更新代码并使用简单的 mvn package 命令创建一个包

【讨论】:

  • 感谢您的回复。我在 GitHub 存储库中没有看到我们使用的 spring 版本是 2.5.6。
  • Sarfaraz,它仍然没有我们使用的版本,即 spring 2.5.6.SECO3。但我保持这个选项打开。首先,我想弄清楚使用 Maven bcoz 是我的团队首先要尝试的
  • @pushya 你能编译你的java类吗?
  • 替换class文件可以使用以下命令 jar uf jar-file input-file(s) docs.oracle.com/javase/tutorial/deployment/jar/update.html
  • 不,我无法编译包装 &lt;pom&gt; 类型的 java 类。
猜你喜欢
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
  • 2015-06-09
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多