【已解决】archiva1.2-M1上传jar时碰到的异常(续)
上午写了这么一个问题
?
http://jansel.iteye.com/blog/285589
?
下午解决问题过程记录:
?
1:下载了apache-archiva-1.2-M1的源码包,一看目录够厉害,分了很多Module。
?
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=-Ddebugwrapper.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的。嗯,就这么做吧!