【已解决】archiva1.2-M1下传jar时碰到的错误(续)

【已解决】archiva1.2-M1上传jar时碰到的异常(续)

上午写了这么一个问题

 

http://jansel.iteye.com/blog/285589

 

下午解决问题过程记录:

 

1:下载了apache-archiva-1.2-M1的源码包,一看目录够厉害,分了很多Module。【已解决】archiva1.2-M1下传jar时碰到的错误(续)

 

2:用Maven把它转换成eclipse工程,命令:mvn eclipse:eclipse 如果想转成myeclipse,命令是mvn eclipse:myeclipse 发现要下载很多很多依赖包,但是cglib-nodep搞不定,最后手动通过archiva上传到archiva的respository中,可以上传(幸好可以上传,否则就要用手动敲命令的方式上传了)

 

3:导入工程,其实就是一堆Module工程,结果发现编译不通过,最后定位到M2_REPO这个变量未定义,指向本地Repository路径即可

 

4:Debug archiva,在${archiva.home}/conf/wrapper.conf中加入如下配置项:

 

wrapper.java.additional.4=-Ddebug
wrapper.java.additional.5=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

 

5:重启archiva,别用archiva restart 命令,我试过几次,都是失败;先archiva stop;然后再archiva start。

 

6:在eclipse中敲断点,发现 File artifactFile 这个变量为空,这个变量给我直觉就是用了struts的upload保存的文件

 

7:查看了页面的源代码,果然文件输入框的name就取名为artifact,那么在Action中Struts就会找到artifactFile来保存上传的文件,artifactName保存上传文件的名称

 

8:看来真的是upload地方出问题了。OK,先修改代码替换,然后再看情况。修改isVersion方法,实现最前面加入如下代码

if(StringUtils.isBlank(unknown))
	{
	    return false;
	}

9:打包,命令mvn package,得到archiva-common-1.2-M1.jar

 

10:覆盖${archiva.home}\apps\archiva\WEB-INF\lib

 

11:重启archiva

 

12:再次上传compass,结果页面提示:

 

the request was rejected because its size (2198924) exceeds the configured maximum (2097152)

 

13:晕倒,我起!Struts默认了2M的大小,而compass的包大小超过2M,这个限制太有点那个了吧...Hibernate和Spring的包都超过2M了。找到${archiva.home}\apps\archiva\WEB-INF\classes\struts.properties,添加如下

//3m
struts.multipart.maxSize=3145728 

 

14:重启archiva,OK!搞定!

 

 

 

不过,不论怎么说,VersionUtil.isVersion写法是有问题的。上传文件大小过大,本来页面要有提示的,但是因为NullPointerException的原因导致了页面无法正确提示。

 

这个算Archiva的Bug吗?

 

另外,目前正在任务之余学习Maven,也写了Maven的文档(每天写点)。忽然有个想法,可以基于Archiva的src来学习Maven的。嗯,就这么做吧!