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フォルダ、サービスフォルダ、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

つまりモデルです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;