`
leobluewing
  • 浏览: 238671 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

archetype:create-from-project生成项目的包名

 
阅读更多
maven里面可以用archetype:create-from-project生成项目骨架,但是包名往往有点问题。

create-from-project命令会去寻找一个包含所有文件的目录路径作为基础包。

比如如下的项目骨架:

src/main/java/
com.company.proid.dao
com.company.proid.service
com.company.proid.web


这样的话,利用create-from-project命令,默认的基础包就会是com.company.proid

比如在com.company.proid.dao包下有一个文件为 baseDao.java,那么生成模板以后,包就会是
package ${package}; 也就是说所有的 ${package} = com.company.proid.

也就是生成的模板里面,src/main/java/ 下直接是一个dao文件夹,一个service文件夹,一个web文件夹。

这样在不需要分业务包的时候没问题,但是如果你的项目骨架是这样的话:

src/main/java/
com.company.proid.moduels.sys
com.company.proid.moduels.sys.dao
com.company.proid.moduels.sys.service
com.company.proid.moduels.sys.web


也就是说model.sys包内是你已经写好的一个完整的功能包,你想放到骨架里面,这个时候直接用archetype:create-from-project命令的话,默认的基础包会变成com.company.proid.moduels.sys。

也就是在模板内, src/main/java下面moduels和sys文件夹就没了。
生成的模板包头如下:
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.dao;


src/main/java/ 下还是一个dao文件夹,一个service文件夹,一个web文件夹。

这样的话,事实上我们可能要生成的实际项目路径如下:

src/main/java/
com.company.proid.moduels.user
com.company.proid.moduels.user.dao
com.company.proid.moduels.user.service
com.company.proid.moduels.user.web
com.company.proid.moduels.sys
com.company.proid.moduels.sys.dao
com.company.proid.moduels.sys.service
com.company.proid.moduels.sys.web


当然在实际使用的时候,应该也没什么关系,大不了再建包,把moduels和sys建出来再重新弄一下也就是了,不过总是不是很完美。

所以需要告诉create-from-project 命令项目的基础包是什么。

用packageName即可:
archetype:create-from-project -DpackageName=com.company.proid

告诉它,我们需要保留moduels和sys文件夹。

这样执行命令以后,生成的模板即为:
src/main/java/modules/sys
和dao,service.web文件夹

生成的文件包头如下:
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.modules.sys.dao;

分享到:
评论
1 楼 yannanying 2015-03-15  
你好,我想问一下,为什么像xml等配置文件也会有这个东西,它会在项目里面打×,这该怎么办呢

相关推荐

Global site tag (gtag.js) - Google Analytics