package Ġcom . be ust . k ob alt . maven Ċ Ċ import Ġcom . be ust . k ob alt . System Properties Ċ import Ġcom . be ust . k ob alt . api . Project Ċ import Ġcom . be ust . k ob alt . misc . K Files Ċ import Ġcom . be ust . k ob alt . misc . log Ċ import Ġcom . google . inject . ass isted inject . Ass isted Ċ import Ġorg . apache . maven . model . Developer Ċ import Ġorg . apache . maven . model . Model Ċ import Ġorg . apache . maven . model . Sc m Ċ import Ġorg . apache . maven . model . io . x pp 3 . Maven X pp 3 Writer Ċ import Ġjava . io . File Ċ import Ġjava . io . String Writer Ċ import Ġjava . nio . charset . Charset Ċ import Ġjavax . inject . Inject Ċ Ċ public Ġclass ĠP om Generator Ġ@ Inject Ġconstructor (@ Ass isted Ġval Ġproject : ĠProject ) Ġ{ ĊĠĠĠ Ġinterface ĠI Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( project : ĠProject ) Ġ: ĠP om Generator ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate () Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( project . version , Ġ{ Ġ" version Ġmandatory Ġon Ġproject Ġ${ project . name }" Ġ}) ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( project . group , Ġ{ Ġ" group Ġmandatory Ġon Ġproject Ġ${ project . name }" Ġ}) ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( project . artifactId , Ġ{ Ġ" artifactId Ġmandatory Ġon Ġproject Ġ${ project . name }" Ġ}) ĊĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠModel (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġproject . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġartifact Id Ġ= Ġproject . artifactId ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġproject . group ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġproject . version ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġproject . description ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlicenses Ġ= Ġproject . licenses . map Ġ{ Ġit . to Maven License () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġproject . url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsc m Ġ= ĠS cm (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . scm ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġit . url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Ġ= Ġit . connection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Connection Ġ= Ġit . developer Connection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( Developer ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠSystem Properties . username ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm . add Developer ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdependencies Ġ= Ġarray ListOf < org . apache . maven . model . Dependency >() ĊĠĠĠĠĠĠĠ Ġm . dependencies Ġ= Ġdependencies ĊĠĠĠĠĠĠĠ Ġproject . compile Dependencies . forEach Ġ{ Ġdep Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies . add ( dep . to Maven Dependencies ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġs Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ ĠMaven X pp 3 Writer (). write ( s , Ġm ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuild Dir Ġ= ĠK Files . make Dir ( project . directory , Ġproject . build Directory ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Dir Ġ= ĠK Files . make Dir ( build Dir . path , Ġ" libs ") ĊĠĠĠĠĠĠĠ Ġval Ġmaven Id Ġ= ĠMaven Id . create ( project . group !! , Ġproject . artifactId !! , Ġproject . packaging , Ġproject . version !! ) ĊĠĠĠĠĠĠĠ Ġval Ġpom File Ġ= ĠSimple Dep ( maven Id ). to P om FileName () ĊĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠFile ( output Dir , Ġpom File ) ĊĠĠĠĠĠĠĠ ĠoutputFile . write Text ( s . toString (), ĠCharset . default Charset ()) ĊĠĠĠĠĠĠĠ Ġlog ( 1 , Ġ" Ġ ĠCreated Ġ$ outputFile ") ĊĠĠĠ Ġ} Ċ }