发表于: 2017-05-25 09:07:31
3 1238
今日完成:
最后一步打包jar,上传到服务器运行。
这一步遇到了几个坑,坑了我几个小时,都是小问题,可难倒不会的。
首先是打包jar。用maven的 mvn clean package,先清理以前的版本再打包。
这个地方遇到一些坑,话了一天时间爬出来。
零代坑是,改名坑死爹
我重写了这个项目。。。重写的时候copy paste了mapper这些东西,结果很多长长的类名没有改到新项目里面的设置。。结果各种编译不过,一个个的找啊找。。大概2-3个小时。。。这个低级趣味坑真是坑爹。
还是要形成自己的命名规范。节省时间。
第一个真正的坑(我不会的地方)是xml配置文件放在哪里?是否打包进去到jar里面‘
众位老大说了,是在src/main/resources, 这个是default的位置。
如果想要设置resource 文件夹可以用maven的<resources>. 也可以选择是否包含,或者不包含某个,或某些特定资源文件。网上说不包含log4j配置文件。
我的项目里包含了spring context配置文件。
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>spring*.xml</include>
</includes>
</resource>
</resources>
第二个坑是:如何把dao这些东西打包成一个jar达到放到哪里都能用的效果。
现是考虑是不是把依赖jar都包到jar里,这个方法被第一个排出了。。因为这样做,jar太大了。。
第二种可能是,在webapp里写一个总的factory class把所有的bean都扔里,每次写一个 jar就把这个jar里面的bean,比如EnrolDataDaoImpl写里,然后增哥webapp共享一个lib 以及依赖,这样似乎最高效,可是不同的jar之间依赖太高,每次写一个功能,包一个jar就要往factory里面加一个,太麻烦。
最后决定jar里面不包dependencies,没个jar里面自己写一个factory,用的时候直接从一个jar里面的factory拿bean。
这样的结果是 假如我有一个报名业务jar,一个注册用户jar。这俩jar里面各有一个factory method class,要用谁就找谁要。
第三个坑是mapper文件
我使用了mapper interface 和mapper xml放在同一个文件夹的方式,让mybatis自己配对。在项目里没问题,打包成jar (包含了mapper.xml)放到别的项目里用就不好用了。现实那个找不到mapper的错误。 Invalid bound statement (not found)。
最后解决方法是改用了java annotation的方式在mapper interface里面配置了。这是折中方法,我觉得这个问题以后还是要遇到。等有时间还要回来再研究这个问题。
解决这几个坑之后,打包jar放到任何项目下都可以运行了。
然后就是发布,我选择了, 目前用 ftp上传jar。
看了下第二个任务,要结合这个一起,所以决定在第二个任务完成的时候再食用maven tomcat7 plugin来食用maven 上床war文件。感觉这地方也是个坑要学至少半天。
明天计划:
估计后天可以开始做第二个项目了
评论