Package org.nuiton.eugene.plugin
Class GenerateMojo
java.lang.Object
org.apache.maven.plugin.AbstractMojo
org.nuiton.plugin.AbstractPlugin
org.nuiton.eugene.plugin.GenerateMojo
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled,org.apache.maven.plugin.Mojo,ChainedFileWriterConfiguration,org.nuiton.plugin.Plugin,org.nuiton.plugin.PluginWithEncoding
@Mojo(name="generate",
requiresDependencyResolution=COMPILE)
public class GenerateMojo
extends org.nuiton.plugin.AbstractPlugin
implements ChainedFileWriterConfiguration, org.nuiton.plugin.PluginWithEncoding
Eugene generator plugin (a.k.a generate mojo)
Fill inputs and mojo will chained needed writer.
- Since:
- 2.5
- Author:
- Tony Chemit - chemit@codelutin.com
-
Nested Class Summary
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,Model>_modelsAll available models (obtain by plexus, keys are plexus roles, values are a instance of corresponding model).protected StringdefaultPackageNom par défaut du paquetage généré (model input specific).protected booleandryRunNe génère rien, analyse juste la configuration.protected StringencodingEncoding to be used for generation of files.protected ChainedWriterEngineengineThe engine to computeChainedFileWriterfrom inputs entries.protected String[]excludeTemplatesTemplates à ne pas utiliser lors de la transformations des models (model input sepcific).protected FileextractDirectoryWhere to copy extracted files (when using class-path data).protected StringextractedPackagesList of package to extract from xmi to models.protected booleanfailIfUnsafeA flag to fail if model properties is not safe (means some tagValues or stereotypes are not correct).protected ClassLoaderfixedClassLoaderfixed classloaderprotected StringfullPackagePathNom du paquetage pour les fichiers générés (xmi input sepcific).protected StringgeneratedPackagesList of packages to generate (comma separated).protected String[]inputsInputs files to used to generate the required model files.protected FilemodelExtensionFileTo use a new object model extension file.protected ModelHelpermodelHelperprotected Map<String,ModelReader<?>>modelReadersAll available writers introspects via plexus.protected Map<String,Template<?>>modelTemplatesAll available templates introspects via plexus.protected StringmodelTypeThe type of model to be used.protected FileoutputDirectoryWhere to generate files.protected booleanoverwriteEcrase les fichiers générés.protected org.apache.maven.project.MavenProjectprojectMaven project.protected Map<String,Object>propertiesProperties to pass to writer.protected StringresolverNom du resolver a utiliser pour les transformations xmi vers model (xmi input sepcific).protected org.apache.maven.settings.SettingssettingsLe settings (pour obtenir le mode offline).protected StringskipInputsList of input (protocol) not to treate separated by comma.protected List<Template<Model>>templateListprotected StringtemplatesTemplates à utiliser, séparés par des virgules pour les transformations depuis les models (model input sepcific).protected booleantestPhaseA flag to mark the mojo to be used in a test phase.protected booleanverbosePour activer le mode verbeux.protected Map<String,ChainedFileWriter>writersAll available writers introspects via plexus. -
Constructor Summary
Constructors Constructor Description GenerateMojo() -
Method Summary
Modifier and Type Method Description protected voidapplyTemplates(Model model, Long lastModifiedSource, File outputDirectory, List<Template<Model>> templateList, WriterReport writerReport)protected booleancheckSkip()protected voiddoAction()protected voidfixCompileSourceRoots(File destDirGen)permet d'ajout le répertoire de génération des fichiers java dans les répertoires de compilation du projet Maven.FilegetBasedir()ClassLoadergetClassLoader()StringgetEncoding()protected StringgetExcludeTemplatesAsString()FilegetExtractDirectory()ClassLoadergetFixedClassLoader()Prepare le classLoader a utiliser dans le generateur.FilegetModelExtensionFile()ModelHelpergetModelHelper()StringgetModelType()FilegetOutputDirectory()org.apache.maven.project.MavenProjectgetProject()Map<String,Object>getProperties()Map<String,ChainedFileWriter>getWriters()protected voidinit()protected List<Template<Model>>initTemplates()booleanisOffline()booleanisOverwrite()booleanisTestPhase()booleanisVerbose()protected WriterReportnewWriterReport()protected StringreportCopiedResources(WriterReport writerReport)protected StringreportGeneratedFiles(WriterReport writerReport, long t0)voidsetEncoding(String encoding)voidsetInputs(String inputs)Add a single input to theinputsproperty.voidsetProject(org.apache.maven.project.MavenProject project)voidsetVerbose(boolean verbose)Methods inherited from class org.nuiton.plugin.AbstractPlugin
acceptPackaging, addCompileSourceRoots, addDirectoryToUrlsList, addResourceDir, addTestCompileSourceRoots, addTestResourceDir, addUrlToUrlsList, afterExecute, backupFile, checkEncoding, checkPackaging, checkResource, checkRunOnceDone, copyFile, createDirectoryIfNecessary, createNewFile, deleteFile, execute, getBackupFile, getFileFromBasedir, getFilesToTreate, getFilesToTreateForRoots, getRootProject, getTemplate, hasClassPath, initClassLoader, isExecutionRoot, isFileNewerThanPomFile, needInvoke, needInvoke, rejectPackaging, removeCompileSourceRoots, removeTestCompileSourceRoots, renameFile, writeFileMethods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
-
Field Details
-
inputs
Inputs files to used to generate the required model files. An include has the following pattern :writer:
when you want to use a specific writer with his default io values. Can also write :[writer:]directory:includes
whereincludesis the pattern to find files from the directory given and must be terminated by the extension of files. Specifying thewritercan be usefull when you want to use a writer for an unknown extension by any writer. Example :<inputs> <input>zargo:</input> <input>src/main/xmi2:**\/*.zargo</input> <input>zargo:src/main/xmi:**\/*.zargo2</input> </inputs>Note: If your using a single input, you can just write :<inputs>zargo</inputs>
- Since:
- 2.0.0
-
skipInputs
List of input (protocol) not to treate separated by comma. Example :<skipInputs>xmi</skipInputs> <skipInputs>xmi,model</skipInputs>
- Since:
- 2.0.0
-
outputDirectory
@Parameter(property="eugene.outputDirectory", defaultValue="target/generated-sources", required=true) protected File outputDirectoryWhere to generate files.- Since:
- 2.0.0
-
extractDirectory
@Parameter(property="eugene.extractDirectory", defaultValue="target/extracted-sources", required=true) protected File extractDirectoryWhere to copy extracted files (when using class-path data).- Since:
- 2.1.3
-
overwrite
@Parameter(property="eugene.overwrite", defaultValue="false") protected boolean overwriteEcrase les fichiers générés.- Since:
- 2.0.0
-
verbose
@Parameter(property="eugene.verbose", defaultValue="${maven.verbose}") protected boolean verbosePour activer le mode verbeux.- Since:
- 2.0.0
-
encoding
@Parameter(property="eugene.encoding", defaultValue="${project.build.sourceEncoding}") protected String encodingEncoding to be used for generation of files. Note: If nothing is filled here, we will use the system propertyfile.encoding.- Since:
- 2.0.0
-
testPhase
@Parameter(property="eugene.testPhase", defaultValue="false") protected boolean testPhaseA flag to mark the mojo to be used in a test phase. This will permits to add generated sources in test compile roots.- Since:
- 2.0.0
-
modelType
@Parameter(property="eugene.modelType", defaultValue="objectmodel", required=true) protected String modelTypeThe type of model to be used. By default, use anobjectmodel.- Since:
- 2.0.0
-
properties
Properties to pass to writer.- Since:
- 2.0.0
-
dryRun
@Parameter(property="eugene.dryRun", defaultValue="false") protected boolean dryRunNe génère rien, analyse juste la configuration.- Since:
- 2.0.0
-
fullPackagePath
@Parameter(property="generator.fullPackagePath", defaultValue="${project.groupId}.${project.artifactId}") protected String fullPackagePathNom du paquetage pour les fichiers générés (xmi input sepcific).- Since:
- 2.0.0
-
resolver
@Parameter(property="generator.resolver", defaultValue="org.nuiton.util.ResourceResolver") protected String resolverNom du resolver a utiliser pour les transformations xmi vers model (xmi input sepcific).- Since:
- 2.0.0
-
templates
Templates à utiliser, séparés par des virgules pour les transformations depuis les models (model input sepcific).- Since:
- 0.50
-
excludeTemplates
Templates à ne pas utiliser lors de la transformations des models (model input sepcific).- Since:
- 0.63
-
defaultPackage
@Parameter(property="eugene.defaultPackage", defaultValue="${project.groupId}.${project.artifactId}") protected String defaultPackageNom par défaut du paquetage généré (model input specific).- Since:
- 0.50
-
generatedPackages
List of packages to generate (comma separated). (model input specific). If the parameter is not filled, will generate all packages.- Since:
- 1.0.0-rc-8
-
extractedPackages
@Parameter(property="eugene.extractedPackages", defaultValue="${project.groupId}.${project.artifactId}") protected String extractedPackagesList of package to extract from xmi to models. (model input specific). If the parameter is not filled, will extract all packages.- Since:
- 1.0.0-rc-8
-
failIfUnsafe
@Parameter(property="eugene.failIfUnsafe", defaultValue="true") protected boolean failIfUnsafeA flag to fail if model properties is not safe (means some tagValues or stereotypes are not correct). Note: since version 3.0, the default value istrue.- Since:
- 2.9
-
modelExtensionFile
To use a new object model extension file.- Since:
- 3.0
-
project
@Parameter(defaultValue="${project}", readonly=true) protected org.apache.maven.project.MavenProject projectMaven project.- Since:
- 2.0.0
-
settings
@Parameter(defaultValue="${settings}", readonly=true) protected org.apache.maven.settings.Settings settingsLe settings (pour obtenir le mode offline).- Since:
- 2.0.0
-
_models
All available models (obtain by plexus, keys are plexus roles, values are a instance of corresponding model). -
writers
@Component(role=org.nuiton.eugene.writer.ChainedFileWriter.class) protected Map<String,ChainedFileWriter> writersAll available writers introspects via plexus. -
modelReaders
@Component(role=org.nuiton.eugene.ModelReader.class) protected Map<String,ModelReader<?>> modelReadersAll available writers introspects via plexus. -
modelTemplates
All available templates introspects via plexus. -
engine
@Component(role=org.nuiton.eugene.writer.ChainedWriterEngine.class) protected ChainedWriterEngine engineThe engine to computeChainedFileWriterfrom inputs entries. -
modelHelper
-
fixedClassLoader
fixed classloader -
templateList
-
-
Constructor Details
-
GenerateMojo
public GenerateMojo()
-
-
Method Details
-
newWriterReport
-
init
- Specified by:
initin classorg.nuiton.plugin.AbstractPlugin- Throws:
Exception
-
checkSkip
protected boolean checkSkip()- Overrides:
checkSkipin classorg.nuiton.plugin.AbstractPlugin
-
doAction
- Specified by:
doActionin classorg.nuiton.plugin.AbstractPlugin- Throws:
Exception
-
applyTemplates
protected void applyTemplates(Model model, Long lastModifiedSource, File outputDirectory, List<Template<Model>> templateList, WriterReport writerReport) throws IOException- Throws:
IOException
-
setInputs
Add a single input to theinputsproperty. Note: This is a convinient way to allow in pom to write<inputs>zargo</inputs>
in stead of array notation :<inputs> <input>zargo:</input> </inputs>- Parameters:
inputs- unique input to add
-
getOutputDirectory
- Specified by:
getOutputDirectoryin interfaceChainedFileWriterConfiguration
-
getExtractDirectory
- Specified by:
getExtractDirectoryin interfaceChainedFileWriterConfiguration
-
getProperties
- Specified by:
getPropertiesin interfaceChainedFileWriterConfiguration
-
getClassLoader
- Specified by:
getClassLoaderin interfaceChainedFileWriterConfiguration
-
getProject
public org.apache.maven.project.MavenProject getProject()- Specified by:
getProjectin interfaceorg.nuiton.plugin.Plugin
-
setProject
public void setProject(org.apache.maven.project.MavenProject project)- Specified by:
setProjectin interfaceorg.nuiton.plugin.Plugin
-
isVerbose
public boolean isVerbose()- Specified by:
isVerbosein interfaceChainedFileWriterConfiguration- Specified by:
isVerbosein interfaceorg.nuiton.plugin.Plugin
-
setVerbose
public void setVerbose(boolean verbose)- Specified by:
setVerbosein interfaceorg.nuiton.plugin.Plugin
-
getEncoding
- Specified by:
getEncodingin interfaceChainedFileWriterConfiguration- Specified by:
getEncodingin interfaceorg.nuiton.plugin.PluginWithEncoding
-
setEncoding
- Specified by:
setEncodingin interfaceorg.nuiton.plugin.PluginWithEncoding
-
isOverwrite
public boolean isOverwrite()- Specified by:
isOverwritein interfaceChainedFileWriterConfiguration
-
isOffline
public boolean isOffline()- Specified by:
isOfflinein interfaceChainedFileWriterConfiguration
-
isTestPhase
public boolean isTestPhase()- Specified by:
isTestPhasein interfaceChainedFileWriterConfiguration
-
getModelType
- Specified by:
getModelTypein interfaceChainedFileWriterConfiguration
-
getWriters
- Specified by:
getWritersin interfaceChainedFileWriterConfiguration
-
getModelHelper
- Specified by:
getModelHelperin interfaceChainedFileWriterConfiguration
-
getBasedir
- Specified by:
getBasedirin interfaceChainedFileWriterConfiguration
-
getModelExtensionFile
- Specified by:
getModelExtensionFilein interfaceChainedFileWriterConfiguration
-
getExcludeTemplatesAsString
- Returns:
- the string representation of excludesTemplates (separated by comma)
-
getFixedClassLoader
Prepare le classLoader a utiliser dans le generateur. Si le mojo est en phase de testtestPhasea été renseigné, target/classes est rajouté. Si des références à des sibling modules, ils seront rajoutés aussi.- Returns:
- le class loader modifie
- Throws:
org.apache.maven.plugin.MojoExecutionException- if any pb
-
fixCompileSourceRoots
permet d'ajout le répertoire de génération des fichiers java dans les répertoires de compilation du projet Maven.- Parameters:
destDirGen- le repertoire a traiter
-
initTemplates
-
reportGeneratedFiles
-
reportCopiedResources
-