首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-11-10 
【已解决】archiva1.2-M1上传jar时碰到的异常(续)上午写了这么一个问题?http://jansel.iteye.com/blog/28558

【已解决】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=-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的。嗯,就这么做吧!

热点排行