private void createPoms(Model pom, String rootArtifactId, String artifactId, File archetypeFilesDirectory, File basedir, Properties pomReversedProperties, boolean preserveCData, boolean keepParent) throws IOException, XmlPullParserException { setArtifactId(pomReversedProperties, pom.getArtifactId()); for (String moduleId : pom.getModules()) { String moduleIdDirectory = moduleId; if (moduleId.indexOf(rootArtifactId) >= 0) { moduleIdDirectory = StringUtils.replace(moduleId, rootArtifactId, "__rootArtifactId__"); } createModulePoms(pomReversedProperties, rootArtifactId, moduleId, FileUtils.resolveFile(basedir, moduleId), FileUtils.resolveFile(archetypeFilesDirectory, moduleIdDirectory), preserveCData, keepParent); } restoreParentArtifactId(pomReversedProperties, null); restoreArtifactId(pomReversedProperties, artifactId); createArchetypePom(pom, archetypeFilesDirectory, pomReversedProperties, FileUtils.resolveFile(basedir, Constants.ARCHETYPE_POM), preserveCData, keepParent); }
getLogger().debug( "Creating filesets" + ( packaged ? ( " packaged (" + packageName + ")" ) : "" ) + ( filtered ? " filtered" fileSets.add( createFileSet( excludes, packaged, filtered, "", includes, defaultEncoding ) ); Map<String, List<String>> groups = getGroupsMap( files, level ); getLogger().debug( "Creating filesets for group " + group ); fileSets.add( getUnpackagedFileSet( filtered, group, groups.get( group ), defaultEncoding ) ); getPackagedFileSets( filtered, group, groups.get( group ), packageName, defaultEncoding ) ); getLogger().debug( "Resolved fileSets " + fileSets );
private void createModulePoms(Properties pomReversedProperties, String rootArtifactId, String packageName, File basedir, File archetypeFilesDirectory, boolean preserveCData, boolean keepParent) throws IOException, XmlPullParserException { Model pom = pomManager.readPom(FileUtils.resolveFile(basedir, Constants.ARCHETYPE_POM)); String parentArtifactId = pomReversedProperties.getProperty(Constants.PARENT_ARTIFACT_ID); String artifactId = pom.getArtifactId(); setParentArtifactId(pomReversedProperties, pomReversedProperties.getProperty(Constants.ARTIFACT_ID)); setArtifactId(pomReversedProperties, pom.getArtifactId()); for (String subModuleId : pom.getModules()) { String subModuleIdDirectory = subModuleId; if (subModuleId.indexOf(rootArtifactId) >= 0) { subModuleIdDirectory = StringUtils.replace(subModuleId, rootArtifactId, "__rootArtifactId__"); } createModulePoms(pomReversedProperties, rootArtifactId, packageName, FileUtils.resolveFile(basedir, subModuleId), FileUtils.resolveFile(archetypeFilesDirectory, subModuleIdDirectory), preserveCData, keepParent); } createModulePom(pom, rootArtifactId, archetypeFilesDirectory, pomReversedProperties, FileUtils.resolveFile(basedir, Constants.ARCHETYPE_POM), preserveCData, keepParent); restoreParentArtifactId(pomReversedProperties, parentArtifactId); restoreArtifactId(pomReversedProperties, artifactId); }
private FileSet getUnpackagedFileSet( final boolean filtered, final String group, final List<String> groupFiles, String defaultEncoding ) { Set<String> extensions = getExtensions( groupFiles ); List<String> includes = new ArrayList<String>(); List<String> excludes = new ArrayList<String>(); for ( String extension : extensions ) { includes.add( "**/*." + extension ); } return createFileSet( excludes, false, filtered, group, includes, defaultEncoding ); }
extractPropertiesFromProject( project, properties, configurationProperties, request.getPackageName() ); getLogger().debug( "No output directory defined, using default: " + DEFAULT_OUTPUT_DIRECTORY ); outputDirectory = FileUtils.resolveFile( basedir, DEFAULT_OUTPUT_DIRECTORY ); getLogger().debug( "Creating archetype in " + outputDirectory ); File archetypePomFile = createArchetypeProjectPom( project, request.getProjectBuildingRequest(), configurationProperties, outputDirectory ); File archetypeResourcesDirectory = new File( outputDirectory, getTemplateOutputDirectory() ); getLogger().debug( "Archetype's files output directory " + archetypeFilesDirectory ); getLogger().debug( "Starting archetype's descriptor " + project.getArtifactId() ); ArchetypeDescriptor archetypeDescriptor = new ArchetypeDescriptor(); addRequiredProperties( archetypeDescriptor, properties ); Properties reverseProperties = getReversedProperties( archetypeDescriptor, properties ); Properties pomReversedProperties = getReversedProperties( archetypeDescriptor, properties ); List<String> fileNames = resolveFileNames( pom, basedir, excludePatterns ); if ( getLogger().isDebugEnabled() ) getLogger().debug( "Scanned for files " + fileNames.size() ); getLogger().debug( "- " + name );
extension.setGroupId("org.sonatype.maven.archetype"); extension.setArtifactId("archetype-packaging"); extension.setVersion(getArchetypeVersion()); model.getBuild().addExtension(extension); plugin.setGroupId("org.sonatype.maven.archetype"); plugin.setArtifactId("archetype-plugin"); plugin.setVersion(getArchetypeVersion()); plugin.setExtensions(true); model.getBuild().addPlugin(plugin); log.debug("Creating archetype's pom"); File archetypePomFile = FileUtils.resolveFile(basedir, getArchetypePom()); File archetypeResourcesDirectory = FileUtils.resolveFile(generatedSourcesDirectory, getTemplateOutputDirectory()); archetypeResourcesDirectory.mkdirs(); addRequiredProperties(archetypeDescriptor, properties); Properties reverseProperties = getRequiredProperties(archetypeDescriptor, properties); Properties pomReversedProperties = getRequiredProperties(archetypeDescriptor, properties); List<String> fileNames = resolveFileNames(pom, basedir); List<FileSet> filesets = resolveFileSets(packageName, fileNames, languages, filtereds, defaultEncoding); log.debug("Resolved filesets for " + archetypeDescriptor.getName()); createArchetypeFiles(reverseProperties, filesets, packageName, basedir, archetypeFilesDirectory, defaultEncoding);
getLogger().debug( "Starting module's descriptor " + moduleId ); getLogger().debug( "Module's files output directory " + archetypeFilesDirectory ); setArtifactId( reverseProperties, pom.getArtifactId() ); List<String> fileNames = resolveFileNames( pom, basedir, excludePatterns ); List<FileSet> filesets = resolveFileSets( packageName, fileNames, languages, filtereds, defaultEncoding ); getLogger().debug( "Resolved filesets for module " + archetypeDescriptor.getName() ); createArchetypeFiles( reverseProperties, filesets, packageName, basedir, archetypeFilesDirectory, defaultEncoding, excludePatterns ); getLogger().debug( "Created files for module " + archetypeDescriptor.getName() ); setParentArtifactId( reverseProperties, pom.getArtifactId() ); getLogger().debug( "Creating module " + subModuleId ); createModule( reverseProperties, rootArtifactId, subModuleId, packageName, FileUtils.resolveFile( basedir, subModuleId ), FileUtils.resolveFile( archetypeFilesDirectory, subModuleIdDirectory ), languages, getLogger().debug( "Added module " + moduleDescriptor.getName() + " in " + archetypeDescriptor.getName() ); restoreParentArtifactId( reverseProperties, parentArtifactId ); restoreArtifactId( reverseProperties, pom.getArtifactId() ); getLogger().debug( "Created Module " + archetypeDescriptor.getName() + " pom" );
throws IOException getLogger().debug( "Creating Archetype/Module files from " + basedir + " to " + archetypeFilesDirectory ); scanner.setIncludes( (String[]) concatenateToList( fileSet.getIncludes(), fileSet.getDirectory() ).toArray( new String[fileSet.getIncludes().size()] ) ); scanner.setExcludes( (String[]) addLists( fileSet.getExcludes(), excludePatterns ).toArray( new String[fileSet.getExcludes().size()] ) ); scanner.addDefaultExcludes(); getLogger().debug( "Using fileset " + fileSet ); scanner.scan(); getLogger().debug( "Scanned " + fileSetResources.size() + " resources" ); processFileSet( basedir, archetypeFilesDirectory, fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName, reverseProperties, defaultEncoding ); getLogger().debug( "Processed " + fileSet.getDirectory() + " files" ); copyFiles( basedir, archetypeFilesDirectory, fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName, reverseProperties ); getLogger().debug( "Copied " + fileSet.getDirectory() + " files" );
private void createArchetypeFiles(Properties reverseProperties, List<FileSet> fileSets, String packageName, File basedir, File archetypeFilesDirectory, String defaultEncoding) throws IOException { log.debug("Creating Archetype/Module files from " + basedir + " to " + archetypeFilesDirectory); for (FileSet fileSet : fileSets) { DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir(basedir); scanner.setIncludes(concatenateToList(fileSet.getIncludes(), fileSet.getDirectory()).toArray(new String[fileSet.getIncludes().size()])); scanner.setExcludes(fileSet.getExcludes().toArray(new String[fileSet.getExcludes().size()])); scanner.addDefaultExcludes(); log.debug("Using fileset " + fileSet); scanner.scan(); List<String> fileSetResources = Arrays.asList(scanner.getIncludedFiles()); log.debug("Scanned " + fileSetResources.size() + " resources"); if (fileSet.isFiltered()) { processFileSet(basedir, archetypeFilesDirectory, fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName, reverseProperties, defaultEncoding); log.debug("Processed " + fileSet.getDirectory() + " files"); } else { copyFiles(basedir, archetypeFilesDirectory, fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName); log.debug("Copied " + fileSet.getDirectory() + " files"); } } }
private void createReplicaFiles(List<FileSet> filesets, File basedir, File replicaFilesDirectory) throws IOException { log.debug("Creating OldArchetype/Module replica files from " + basedir + " to " + replicaFilesDirectory); copyPom(basedir, replicaFilesDirectory); for (FileSet fileset : filesets) { DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir(basedir); scanner.setIncludes((String[]) concatenateToList(fileset.getIncludes(), fileset.getDirectory()).toArray(new String[fileset.getIncludes().size()])); scanner.setExcludes((String[]) fileset.getExcludes().toArray(new String[fileset.getExcludes().size()])); scanner.addDefaultExcludes(); log.debug("Using fileset " + fileset); scanner.scan(); List<String> fileSetResources = Arrays.asList(scanner.getIncludedFiles()); copyFiles(basedir, replicaFilesDirectory, fileset.getDirectory(), fileSetResources, false, null); log.debug("Copied " + fileset.getDirectory() + " files"); } }
getLogger().debug( "Resolving filesets with package=" + packageName + ", languages=" + languages + " and extentions=" + filtereds ); getLogger().debug( "Using languages includes " + languageIncludes ); getLogger().debug( "Using filtered includes " + filteredIncludes ); resolvedFileSets.addAll( createFileSets( filteredFiles, 3, true, packageName, true, defaultEncoding ) ); createFileSets( unfilteredFiles, 3, true, packageName, false, defaultEncoding ) ); createFileSets( filteredFiles, 3, false, packageName, true, defaultEncoding ) ); createFileSets( unfilteredFiles, 3, false, packageName, false, defaultEncoding ) ); resolvedFileSets.addAll( createFileSets( filteredFiles, 3, true, packageName, true, defaultEncoding ) ); createFileSets( unfilteredFiles, 3, true, packageName, false, defaultEncoding ) ); createFileSets( filteredFiles, 3, false, packageName, true, defaultEncoding ) ); createFileSets( unfilteredFiles, 3, false, packageName, false, defaultEncoding ) ); createFileSets( filteredFiles, 2, false, packageName, true, defaultEncoding ) ); createFileSets( unfilteredFiles, 2, false, packageName, false, defaultEncoding ) ); resolvedFileSets.addAll( createFileSets( filteredFiles, 3, true, packageName, true, defaultEncoding ) );
private FileSet getPackagedFileSet(final boolean filtered, final Set<String> packagedExtensions, final String group, final Set<String> unpackagedExtensions, final List<String> unpackagedFiles, String defaultEncoding) { List<String> includes = new ArrayList<String>(); List<String> excludes = new ArrayList<String>(); for (String extension : packagedExtensions) { includes.add("**/*." + extension); if (unpackagedExtensions.contains(extension)) { excludes.addAll(archetypeFilesResolver.getFilesWithExtension(unpackagedFiles, extension)); } } FileSet fileset = createFileSet(excludes, true, filtered, group, includes, defaultEncoding); return fileset; }
resolvedFileSets.addAll(createFileSets(filteredFiles, 3, true, packageName, true, defaultEncoding)); resolvedFileSets.addAll(createFileSets(unfilteredFiles, 3, true, packageName, false, defaultEncoding)); resolvedFileSets.addAll(createFileSets(filteredFiles, 3, false, packageName, true, defaultEncoding)); resolvedFileSets.addAll(createFileSets(unfilteredFiles, 3, false, packageName, false, defaultEncoding)); resolvedFileSets.addAll(createFileSets(filteredFiles, 3, true, packageName, true, defaultEncoding)); resolvedFileSets.addAll(createFileSets(unfilteredFiles, 3, true, packageName, false, defaultEncoding)); resolvedFileSets.addAll(createFileSets(filteredFiles, 3, false, packageName, true, defaultEncoding)); resolvedFileSets.addAll(createFileSets(unfilteredFiles, 3, false, packageName, false, defaultEncoding)); resolvedFileSets.addAll(createFileSets(filteredFiles, 2, false, packageName, true, defaultEncoding)); resolvedFileSets.addAll(createFileSets(unfilteredFiles, 2, false, packageName, false, defaultEncoding)); resolvedFileSets.addAll(createFileSets(filteredFiles, 3, true, packageName, true, defaultEncoding)); resolvedFileSets.addAll(createFileSets(unfilteredFiles, 3, true, packageName, false, defaultEncoding)); unfilteredFiles = thirdLevelResourcesfiles; if (!filteredFiles.isEmpty()) { resolvedFileSets.addAll(createFileSets(filteredFiles, 3, false, packageName, true, defaultEncoding)); resolvedFileSets.addAll(createFileSets(unfilteredFiles, 3, false, packageName, false, defaultEncoding));
archetypeDescriptor.setDir(moduleDirectory); setArtifactId(reverseProperties, pom.getArtifactId()); List<String> fileNames = resolveFileNames(pom, basedir); List<FileSet> filesets = resolveFileSets(packageName, fileNames, languages, filtereds, defaultEncoding); log.debug("Resolved filesets for module " + archetypeDescriptor.getName()); createArchetypeFiles(reverseProperties, filesets, packageName, basedir, archetypeFilesDirectory, defaultEncoding); log.debug("Created files for module " + archetypeDescriptor.getName()); setParentArtifactId(reverseProperties, pom.getArtifactId()); ModuleDescriptor moduleDescriptor = createModule(reverseProperties, rootArtifactId, subModuleId, packageName, FileUtils.resolveFile(basedir, subModuleId), FileUtils.resolveFile( archetypeFilesDirectory, subModuleIdDirectory), languages, filtereds, defaultEncoding, preserveCData, keepParent); log.debug("Added module " + moduleDescriptor.getName() + " in " + archetypeDescriptor.getName()); restoreParentArtifactId(reverseProperties, parentArtifactId); restoreArtifactId(reverseProperties, pom.getArtifactId());
private FileSet getUnpackagedFileSet(final boolean filtered, final String group, final List<String> groupFiles, String defaultEncoding) { Set<String> extensions = getExtensions(groupFiles); List<String> includes = new ArrayList<String>(); List<String> excludes = new ArrayList<String>(); for (String extension : extensions) { includes.add("**/*." + extension); } return createFileSet(excludes, false, filtered, group, includes, defaultEncoding); }
private FileSet getUnpackagedFileSet(final boolean filtered, final Set<String> unpackagedExtensions, final List<String> unpackagedFiles, final String group, final Set<String> packagedExtensions, String defaultEncoding) { List<String> includes = new ArrayList<String>(); List<String> excludes = new ArrayList<String>(); for (String extension : unpackagedExtensions) { if (packagedExtensions.contains(extension)) { includes.addAll(archetypeFilesResolver.getFilesWithExtension(unpackagedFiles, extension)); } else { includes.add("**/*." + extension); } } return createFileSet(excludes, false, filtered, group, includes, defaultEncoding); }
private void createModulePoms( Properties pomReversedProperties, String rootArtifactId, String packageName, File basedir, File archetypeFilesDirectory, boolean preserveCData, boolean keepParent ) throws FileNotFoundException, IOException, XmlPullParserException { Model pom = pomManager.readPom( FileUtils.resolveFile( basedir, Constants.ARCHETYPE_POM ) ); String parentArtifactId = pomReversedProperties.getProperty( Constants.PARENT_ARTIFACT_ID ); String artifactId = pom.getArtifactId(); setParentArtifactId( pomReversedProperties, pomReversedProperties.getProperty( Constants.ARTIFACT_ID ) ); setArtifactId( pomReversedProperties, pom.getArtifactId() ); for ( String subModuleId : pom.getModules() ) { String subModuleIdDirectory = subModuleId; if ( subModuleId.indexOf( rootArtifactId ) >= 0 ) { subModuleIdDirectory = StringUtils.replace( subModuleId, rootArtifactId, "__rootArtifactId__" ); } createModulePoms( pomReversedProperties, rootArtifactId, packageName, FileUtils.resolveFile( basedir, subModuleId ), FileUtils.resolveFile( archetypeFilesDirectory, subModuleIdDirectory ), preserveCData, keepParent ); } createModulePom( pom, rootArtifactId, archetypeFilesDirectory, pomReversedProperties, FileUtils.resolveFile( basedir, Constants.ARCHETYPE_POM ), preserveCData, keepParent ); restoreParentArtifactId( pomReversedProperties, parentArtifactId ); restoreArtifactId( pomReversedProperties, artifactId ); }
private void createPoms( Model pom, String rootArtifactId, String artifactId, File archetypeFilesDirectory, File basedir, Properties pomReversedProperties, boolean preserveCData, boolean keepParent ) throws IOException, FileNotFoundException, XmlPullParserException { setArtifactId( pomReversedProperties, pom.getArtifactId() ); for ( String moduleId : pom.getModules() ) { String moduleIdDirectory = moduleId; if ( moduleId.indexOf( rootArtifactId ) >= 0 ) { moduleIdDirectory = StringUtils.replace( moduleId, rootArtifactId, "__rootArtifactId__" ); } createModulePoms( pomReversedProperties, rootArtifactId, moduleId, FileUtils.resolveFile( basedir, moduleId ), new File( archetypeFilesDirectory, moduleIdDirectory ), preserveCData, keepParent ); } restoreParentArtifactId( pomReversedProperties, null ); restoreArtifactId( pomReversedProperties, artifactId ); createArchetypePom( pom, archetypeFilesDirectory, pomReversedProperties, FileUtils.resolveFile( basedir, Constants.ARCHETYPE_POM ), preserveCData, keepParent ); }
private List<FileSet> createFileSets(List<String> files, int level, boolean packaged, String packageName, boolean filtered, String defaultEncoding) { List<FileSet> fileSets = new ArrayList<FileSet>(); if (!files.isEmpty()) { log.debug("Creating filesets" + (packaged ? (" packaged (" + packageName + ")") : "") + (filtered ? " filtered" : "") + " at level " + level); if (level == 0) { List<String> includes = new ArrayList<String>(); List<String> excludes = new ArrayList<String>(); for (String file : files) { includes.add(file); } if (!includes.isEmpty()) { fileSets.add(createFileSet(excludes, packaged, filtered, "", includes, defaultEncoding)); } } else { Map<String,List<String>> groups = getGroupsMap(files, level); for (String group : groups.keySet()) { log.debug("Creating filesets for group " + group); if (!packaged) { fileSets.add(getUnpackagedFileSet(filtered, group, groups.get(group), defaultEncoding)); } else { fileSets.addAll(getPackagedFileSets(filtered, group, groups.get(group), packageName, defaultEncoding)); } } } log.debug("Resolved fileSets " + fileSets); } return fileSets; }
private FileSet getPackagedFileSet( final boolean filtered, final Set<String> packagedExtensions, final String group, final Set<String> unpackagedExtensions, final List<String> unpackagedFiles, String defaultEncoding ) { List<String> includes = new ArrayList<String>(); List<String> excludes = new ArrayList<String>(); for ( String extension : packagedExtensions ) { includes.add( "**/*." + extension ); if ( unpackagedExtensions.contains( extension ) ) { excludes.addAll( archetypeFilesResolver.getFilesWithExtension( unpackagedFiles, extension ) ); } } return createFileSet( excludes, true, filtered, group, includes, defaultEncoding ); }