使用maven shade更改现有类

时间:2014-09-17 13:13:33

标签: java maven maven-shade-plugin

我想要做的是更改项目中的两个现有类(项目A)。这些类的类型为.class。 我想在另一个项目(项目B)中使用maven shade来指出项目A中的这些类,对它们进行一些修改,然后将它们发送回项目(项目A)。

我该怎么做?

到目前为止,我已经创建了一个项目(B)并将maven shade插件添加到pom文件中,并试图指出我想要更改的类。不知道这是否是正确的方法。

这是我的pom文件:

   <project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven- 
   4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>logic-rexster</groupId>
   <artifactId>logic-rexster</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 <build>
<sourceDirectory>src</sourceDirectory>
<plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
      <source>1.7</source>
      <target>1.7</target>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
        <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <artifactSet>
                            <includes>
                                <include>com.tinkerpop.rexster:rexster-server:*:*</include>
                            </includes>
                        </artifactSet>
                                  <filters>
                    <filter>
                        <artifact>rexster-server:rexster-server</artifact>
                        <includes>
                            <!-- These classes will be taken directly from dependency JAR -->
                            <include>/rexster-server/com/tinkerpop/rexster/server/RexsterApplicationProvider.class</include>
                            <include>/rexster-server/com/tinkerpop/rexster/filter/AbstractSecurityFilter.class</include>
                        </includes>
                    </filter>
                </filters>
                  <transformers>
                    <transformer implementation=
                      "org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                      <resource>LogicRexsterApplicationProvider</resource>
                      <file>RexsterApplicationProvider</file>
                    </transformer>
                  </transformers>
                    </configuration>
                </execution>
            </executions>
  </plugin>
</plugins>
    </build>
    <dependencies>
     <dependency>
       <groupId>com.tinkerpop.rexster</groupId>
       <artifactId>rexster-server</artifactId>
       <version>2.4.0</version>
   </dependency>

   </dependencies>
   </project>

关于我想要做的修改: 我想修改RexsterApplicationProvider.class类。 从AbstractSecurityFilter.class类中复制一些东西

[UPDATE] 我已经将我想要改变的两个类添加到我的新项目(B)的src文件夹中。 (这些类在我在这里添加之前已被反编译。)

我从哪里开始?

0 个答案:

没有答案