spring-core-4.04 源码编译过程记录

最近工作需要修改spring-core源码,在编译过程遇到点问题记录如下:


地址:http://grepcode.com/snapshot/repo1.maven.org/maven2/org.springframework/spring-core/4.0.4.RELEASE

Spring Core
Project metadata download:  spring-core-4.0.4.RELEASE.pom
Binary download:  spring-core-4.0.4.RELEASE.jar
Source download:  spring-core-4.0.4.RELEASE-sources.jar

Source下载解压,导入IDEA中,贴上pom文件,编译,发现报错如下:

spring-core\src\main\java\org\springframework\cglib\core\SpringNamingPolicy.java:[30,40] 错误: 找不到符号
spring-core\src\main\java\org\springframework\cglib\core\SpringNamingPolicy.java:[34,1] 错误: 方法不会覆盖或实现超类型的方法

网上查询,发现是缺少了spring-cglib-repack.jar和spring-objenesis-repack.jar两个包,具体版本要根据你编译的spring-core的版本来定

如何获取正确的2个jar包呢,办法如下:

1.在maven仓库中下载对应版本的jar包 我这里下载    Spring Core » 4.0.4.RELEASE

2.解压开

3.建立 pac_ajr_cglib  和  pac_jar_objenesis 目录,然后按照如下结构建立目录,并将第2步解压的 cglib 和 objenesis 拷贝到 如下目录中
├─pac_jar_cglib  
│  └─org 
│      └─springframework 
│          └─cglib
 
│            
└─pac_jar_objenesis 
    └─org 
        └─springframework 
            └─objenesis

4.选中绿色背景的文件夹,按住shift键,鼠标右键—>在此处打开CMD。在命令行窗口 输入  jar   cvf xxxxxx.jar *

如  从“pac_jar_objenesis”文件夹进入命令行CMD,执行下面的命令

jar   cvf spring-objenesis-repack-2.4.jar *    ps:其中  * 代表目录下所有文件被打包进jar文件

就会生成  spring-objenesis-repack-2.4.jar 


5.然后在传到本地仓库,在pom文件里面添加引用

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-objenesis-repack</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-cglib-repack</artifactId>
            <version>3.2.4</version>
        </dependency>

6.打jar包并包含依赖jar文件(解压依赖jar并打包)pom文件设置

<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass></mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

7.依赖jar,打包说明,由于打包只需要包含spring-cglib-repack.jar和spring-objenesis-repack.jar两个包的类,所以在package的时候需要将前4个依赖jar包的scope属性由 compile  改成  test ,这样打出来的包就不包含它们了。

<dependencies>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>net.sf.jopt-simple</groupId>
            <artifactId>jopt-simple</artifactId>
            <version>4.6</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.4</version>
            <scope>compile</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-objenesis-repack</artifactId>
            <version>2.4</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-cglib-repack</artifactId>
            <version>3.2.4</version>
        </dependency>
    </dependencies>

8.最终target目录下面会生成一个spring-core-4.0.4.RELEASE-jar-with-dependencies.jar   发现它和maven下载的 jar包大小已经相差不大了 ,完毕!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值