Maven创建项目模板自定义基本包名

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

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

比如如下的项目骨架: 
 

Java代码 

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文件夹。 

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

Java代码 

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文件夹就没了。 
生成的模板包头如下: 

Java代码 

#set( $symbol_pound = '#' )  
#set( $symbol_dollar = '$' )  
#set( $symbol_escape = '\' )  
package ${package}.dao;  


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

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

Java代码 

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文件夹。 

这样执行命令以后,生成的模板即为: 

Java代码 

src/main/java/modules/sys  
和dao,service.web文件夹  
  
生成的文件包头如下:  
#set( $symbol_pound = '#' )  
#set( $symbol_dollar = '$' )  
#set( $symbol_escape = '\' )  
package ${package}.modules.sys.dao;

猜你喜欢

转载自my.oschina.net/u/195935/blog/1505738
今日推荐