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,org.nuiton.eugene.writer.ChainedFileWriterConfiguration,org.nuiton.plugin.Plugin,org.nuiton.plugin.PluginWithEncoding
@Mojo(name="generate", requiresDependencyResolution=COMPILE) public class GenerateMojo extends org.nuiton.plugin.AbstractPlugin implements org.nuiton.eugene.writer.ChainedFileWriterConfiguration, org.nuiton.plugin.PluginWithEncodingEugene generator plugin (a.k.a generate mojo) Fill inputs and mojo will chained needed writer.- Since:
- 2.5
- Author:
- Tony Chemit - chemit@codelutin.com
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,org.nuiton.eugene.models.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 org.nuiton.eugene.writer.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 org.nuiton.eugene.ModelHelpermodelHelperprotected Map<String,org.nuiton.eugene.ModelReader<?>>modelReadersAll available writers introspects via plexus.protected Map<String,org.nuiton.eugene.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<org.nuiton.eugene.Template<org.nuiton.eugene.models.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,org.nuiton.eugene.writer.ChainedFileWriter>writersAll available writers introspects via plexus.
-
Constructor Summary
Constructors Constructor Description GenerateMojo()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidapplyTemplates(org.nuiton.eugene.models.Model model, Long lastModifiedSource, File outputDirectory, List<org.nuiton.eugene.Template<org.nuiton.eugene.models.Model>> templateList, org.nuiton.eugene.writer.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()org.nuiton.eugene.ModelHelpergetModelHelper()StringgetModelType()FilegetOutputDirectory()org.apache.maven.project.MavenProjectgetProject()Map<String,Object>getProperties()Map<String,org.nuiton.eugene.writer.ChainedFileWriter>getWriters()protected voidinit()protected List<org.nuiton.eugene.Template<org.nuiton.eugene.models.Model>>initTemplates()booleanisOffline()booleanisOverwrite()booleanisTestPhase()booleanisVerbose()protected org.nuiton.eugene.writer.WriterReportnewWriterReport()protected StringreportCopiedResources(org.nuiton.eugene.writer.WriterReport writerReport)protected StringreportGeneratedFiles(org.nuiton.eugene.writer.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, writeFile
-
Methods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
-
-
-
-
Field Detail
-
inputs
@Parameter(property="eugene.inputs", required=true) protected String[] inputsInputs 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
@Parameter(property="eugene.skipInputs") protected String 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
@Parameter protected Map<String,Object> 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
@Parameter(property="eugene.templates") protected String templates
Templates à utiliser, séparés par des virgules pour les transformations depuis les models (model input sepcific).- Since:
- 0.50
-
excludeTemplates
@Parameter(property="eugene.excludeTemplates") protected String[] 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
@Parameter(property="eugene.generatedPackages") protected String 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
@Parameter(property="eugene.modelExtensionFile") protected File 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
@Component(role=org.nuiton.eugene.models.Model.class) protected Map<String,org.nuiton.eugene.models.Model> _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,org.nuiton.eugene.writer.ChainedFileWriter> writers
All available writers introspects via plexus.
-
modelReaders
@Component(role=org.nuiton.eugene.ModelReader.class) protected Map<String,org.nuiton.eugene.ModelReader<?>> modelReaders
All available writers introspects via plexus.
-
modelTemplates
@Component(role=org.nuiton.eugene.Template.class) protected Map<String,org.nuiton.eugene.Template<?>> modelTemplates
All available templates introspects via plexus.
-
engine
@Component(role=org.nuiton.eugene.writer.ChainedWriterEngine.class) protected org.nuiton.eugene.writer.ChainedWriterEngine engine
The engine to computeChainedFileWriterfrom inputs entries.
-
modelHelper
protected org.nuiton.eugene.ModelHelper modelHelper
-
fixedClassLoader
protected ClassLoader fixedClassLoader
fixed classloader
-
templateList
protected List<org.nuiton.eugene.Template<org.nuiton.eugene.models.Model>> templateList
-
-
Method Detail
-
newWriterReport
protected org.nuiton.eugene.writer.WriterReport newWriterReport()
-
init
protected void init() throws Exception- Specified by:
initin classorg.nuiton.plugin.AbstractPlugin- Throws:
Exception
-
checkSkip
protected boolean checkSkip()
- Overrides:
checkSkipin classorg.nuiton.plugin.AbstractPlugin
-
doAction
protected void doAction() throws Exception- Specified by:
doActionin classorg.nuiton.plugin.AbstractPlugin- Throws:
Exception
-
applyTemplates
protected void applyTemplates(org.nuiton.eugene.models.Model model, Long lastModifiedSource, File outputDirectory, List<org.nuiton.eugene.Template<org.nuiton.eugene.models.Model>> templateList, org.nuiton.eugene.writer.WriterReport writerReport) throws IOException- Throws:
IOException
-
setInputs
public void setInputs(String inputs)
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
public File getOutputDirectory()
- Specified by:
getOutputDirectoryin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getExtractDirectory
public File getExtractDirectory()
- Specified by:
getExtractDirectoryin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getProperties
public Map<String,Object> getProperties()
- Specified by:
getPropertiesin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getClassLoader
public ClassLoader getClassLoader()
- Specified by:
getClassLoaderin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
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 interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration- Specified by:
isVerbosein interfaceorg.nuiton.plugin.Plugin
-
setVerbose
public void setVerbose(boolean verbose)
- Specified by:
setVerbosein interfaceorg.nuiton.plugin.Plugin
-
getEncoding
public String getEncoding()
- Specified by:
getEncodingin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration- Specified by:
getEncodingin interfaceorg.nuiton.plugin.PluginWithEncoding
-
setEncoding
public void setEncoding(String encoding)
- Specified by:
setEncodingin interfaceorg.nuiton.plugin.PluginWithEncoding
-
isOverwrite
public boolean isOverwrite()
- Specified by:
isOverwritein interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
isOffline
public boolean isOffline()
- Specified by:
isOfflinein interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
isTestPhase
public boolean isTestPhase()
- Specified by:
isTestPhasein interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getModelType
public String getModelType()
- Specified by:
getModelTypein interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getWriters
public Map<String,org.nuiton.eugene.writer.ChainedFileWriter> getWriters()
- Specified by:
getWritersin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getModelHelper
public org.nuiton.eugene.ModelHelper getModelHelper()
- Specified by:
getModelHelperin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getBasedir
public File getBasedir()
- Specified by:
getBasedirin interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getModelExtensionFile
public File getModelExtensionFile()
- Specified by:
getModelExtensionFilein interfaceorg.nuiton.eugene.writer.ChainedFileWriterConfiguration
-
getExcludeTemplatesAsString
protected String getExcludeTemplatesAsString()
- Returns:
- the string representation of excludesTemplates (separated by comma)
-
getFixedClassLoader
public ClassLoader getFixedClassLoader() throws org.apache.maven.plugin.MojoExecutionException
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
protected void fixCompileSourceRoots(File destDirGen)
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
protected List<org.nuiton.eugene.Template<org.nuiton.eugene.models.Model>> initTemplates()
-
reportGeneratedFiles
protected String reportGeneratedFiles(org.nuiton.eugene.writer.WriterReport writerReport, long t0)
-
reportCopiedResources
protected String reportCopiedResources(org.nuiton.eugene.writer.WriterReport writerReport)
-
-