private Map<String, List<String>> getGroupsMap( final List<String> files, final int level ) { Map<String, List<String>> groups = new HashMap<String, List<String>>(); for ( String file : files ) { String directory = PathUtils.getDirectory( file, level ); // make all groups have unix style directory = StringUtils.replace( directory, File.separator, "/" ); if ( !groups.containsKey( directory ) ) { groups.put( directory, new ArrayList<String>() ); } List<String> group = groups.get( directory ); String innerPath = file.substring( directory.length() + 1 ); // make all groups have unix style innerPath = StringUtils.replace( innerPath, File.separator, "/" ); group.add( innerPath ); } getLogger().debug( "Sorted " + groups.size() + " groups in " + files.size() + " files" ); getLogger().debug( "Sorted Files: " + files ); return groups; }
private List<String> resolveFileNames( final Model pom, final File basedir, List<String> excludePatterns ) throws IOException { getLogger().debug( "Resolving files for " + pom.getId() + " in " + basedir ); StringBuffer buff = new StringBuffer( "pom.xml*,archetype.properties*,target/**," ); for ( String module : pom.getModules() ) { buff.append( ',' ).append( module ).append( "/**" ); } for ( String defaultExclude : ListScanner.DEFAULTEXCLUDES ) { buff.append( ',' ).append( defaultExclude ).append( "/**" ); } for ( String excludePattern : excludePatterns ) { buff.append( ',' ).append( excludePattern ); } String excludes = PathUtils.convertPathForOS( buff.toString() ); List<String> fileNames = FileUtils.getFileNames( basedir, "**,.*,**/.*", excludes, false ); getLogger().debug( "Resolved " + fileNames.size() + " files" ); getLogger().debug( "Resolved Files:" + fileNames ); return fileNames; }
private void addRequiredProperties( ArchetypeDescriptor archetypeDescriptor, Properties properties ) { Properties requiredProperties = new Properties(); requiredProperties.putAll( properties ); requiredProperties.remove( Constants.ARCHETYPE_GROUP_ID ); requiredProperties.remove( Constants.ARCHETYPE_ARTIFACT_ID ); requiredProperties.remove( Constants.ARCHETYPE_VERSION ); requiredProperties.remove( Constants.GROUP_ID ); requiredProperties.remove( Constants.ARTIFACT_ID ); requiredProperties.remove( Constants.VERSION ); requiredProperties.remove( Constants.PACKAGE ); requiredProperties.remove( Constants.EXCLUDE_PATTERNS ); for ( Iterator<?> propertiesIterator = requiredProperties.keySet().iterator(); propertiesIterator.hasNext(); ) { String propertyKey = (String) propertiesIterator.next(); RequiredProperty requiredProperty = new RequiredProperty(); requiredProperty.setKey( propertyKey ); requiredProperty.setDefaultValue( requiredProperties.getProperty( propertyKey ) ); archetypeDescriptor.addRequiredProperty( requiredProperty ); getLogger().debug( "Adding requiredProperty " + propertyKey + "=" + requiredProperties.getProperty( propertyKey ) + " to archetype's descriptor" ); } }
private void copyFiles( File basedir, File archetypeFilesDirectory, String directory, List<String> fileSetResources, boolean packaged, String packageName, Properties reverseProperties ) throws IOException { String packageAsDirectory = StringUtils.replace( packageName, ".", File.separator ); getLogger().debug( "Package as Directory: Package:" + packageName + "->" + packageAsDirectory ); for ( String inputFileName : fileSetResources ) { String outputFileName = packaged ? StringUtils.replace( inputFileName, packageAsDirectory + File.separator, "" ) : inputFileName; getLogger().debug( "InputFileName:" + inputFileName ); getLogger().debug( "OutputFileName:" + outputFileName ); reverseProperties.remove( "archetype.languages" ); String reversedOutputFilename = getReversedFilename( outputFileName, reverseProperties ); File outputFile = new File( archetypeFilesDirectory, reversedOutputFilename ); File inputFile = new File( basedir, inputFileName ); outputFile.getParentFile().mkdirs(); FileUtils.copyFile( inputFile, outputFile ); } }
getLogger().debug( "Added basic integration test" );
getLogger().debug( "Package as Directory: Package:" + packageName + "->" + packageAsDirectory ); : inputFileName; getLogger().debug( "InputFileName:" + inputFileName ); getLogger().warn( "Archetype uses ${" + property + "} for internal processing, but file " + inputFile + " contains this property already" ); String outputFilename = getReversedFilename( initialFilename, reverseProperties ); getLogger().debug( "OutputFileName:" + outputFilename );
private List<FileSet> getPackagedFileSets( final boolean filtered, final String group, final List<String> groupFiles, final String packageName, String defaultEncoding ) { String packageAsDir = StringUtils.replace( packageName, ".", "/" ); List<FileSet> packagedFileSets = new ArrayList<FileSet>(); List<String> packagedFiles = archetypeFilesResolver.getPackagedFiles( groupFiles, packageAsDir ); getLogger().debug( "Found packaged Files:" + packagedFiles ); List<String> unpackagedFiles = archetypeFilesResolver.getUnpackagedFiles( groupFiles, packageAsDir ); getLogger().debug( "Found unpackaged Files:" + unpackagedFiles ); Set<String> packagedExtensions = getExtensions( packagedFiles ); getLogger().debug( "Found packaged extensions " + packagedExtensions ); Set<String> unpackagedExtensions = getExtensions( unpackagedFiles ); if ( !packagedExtensions.isEmpty() ) { packagedFileSets.add( getPackagedFileSet( filtered, packagedExtensions, group, unpackagedExtensions, unpackagedFiles, defaultEncoding ) ); } if ( !unpackagedExtensions.isEmpty() ) { getLogger().debug( "Found unpackaged extensions " + unpackagedExtensions ); packagedFileSets.add( getUnpackagedFileSet( filtered, unpackagedExtensions, unpackagedFiles, group, packagedExtensions, defaultEncoding ) ); } return packagedFileSets; }
getLogger().debug( "Resolving filesets with package=" + packageName + ", languages=" + languages + " and extentions=" + filtereds ); getLogger().debug( "Using languages includes " + languageIncludes ); getLogger().debug( "Using filtered includes " + filteredIncludes ); getLogger().info( "Ignored files: " + files );
throws IOException getLogger().debug( "Creating Archetype/Module files from " + basedir + " to " + archetypeFilesDirectory ); new String[fileSet.getExcludes().size()] ) ); scanner.addDefaultExcludes(); getLogger().debug( "Using fileset " + fileSet ); scanner.scan(); getLogger().debug( "Scanned " + fileSetResources.size() + " resources" ); getLogger().debug( "Processed " + fileSet.getDirectory() + " files" ); getLogger().debug( "Copied " + fileSet.getDirectory() + " files" );
getLogger().debug( "Starting module's descriptor " + moduleId ); getLogger().debug( "Module's files output directory " + archetypeFilesDirectory ); getLogger().debug( "Resolved filesets for module " + archetypeDescriptor.getName() ); getLogger().debug( "Created files for module " + archetypeDescriptor.getName() ); getLogger().debug( "Creating module " + subModuleId ); getLogger().debug( "Added module " + moduleDescriptor.getName() + " in " + archetypeDescriptor.getName() ); restoreArtifactId( reverseProperties, pom.getArtifactId() ); getLogger().debug( "Created Module " + archetypeDescriptor.getName() + " pom" );
getLogger().debug( "No output directory defined, using default: " + DEFAULT_OUTPUT_DIRECTORY ); outputDirectory = FileUtils.resolveFile( basedir, DEFAULT_OUTPUT_DIRECTORY ); getLogger().debug( "Creating archetype in " + outputDirectory ); getLogger().debug( "Archetype's files output directory " + archetypeFilesDirectory ); getLogger().debug( "Starting archetype's descriptor " + project.getArtifactId() ); ArchetypeDescriptor archetypeDescriptor = new ArchetypeDescriptor(); if ( getLogger().isDebugEnabled() ) getLogger().debug( "Scanned for files " + fileNames.size() ); getLogger().debug( "- " + name ); getLogger().debug( "Resolved filesets for " + archetypeDescriptor.getName() ); getLogger().debug( "Created files for " + archetypeDescriptor.getName() ); getLogger().debug( "Creating module " + moduleId ); getLogger().debug( "Added module " + moduleDescriptor.getName() + " in " + archetypeDescriptor.getName() ); configurationProperties.getProperty( Constants.ARTIFACT_ID ), archetypeFilesDirectory, basedir, pomReversedProperties, preserveCData, keepParent ); getLogger().debug( "Created Archetype " + archetypeDescriptor.getName() + " template pom(s)" );
getLogger().debug( "Preserving CDATA parts of pom" ); File inputFile = FileUtils.resolveFile( archetypeFilesDirectory, Constants.ARCHETYPE_POM + ".tmp" ); getLogger().warn( "Archetype uses ${" + property + "} for internal processing, but file " + initialPomFile + " contains this property already" );
private FileSet createFileSet( final List<String> excludes, final boolean packaged, final boolean filtered, final String group, final List<String> includes, String defaultEncoding ) { FileSet fileSet = new FileSet(); fileSet.setDirectory( group ); fileSet.setPackaged( packaged ); fileSet.setFiltered( filtered ); fileSet.setIncludes( includes ); fileSet.setExcludes( excludes ); fileSet.setEncoding( defaultEncoding ); getLogger().debug( "Created Fileset " + fileSet ); return fileSet; }
getLogger().debug( "Preserving CDATA parts of pom" ); File inputFile = FileUtils.resolveFile( archetypeFilesDirectory, Constants.ARCHETYPE_POM + ".tmp" ); getLogger().warn( "OldArchetype uses ${" + property + "} for internal processing, but file " + initialPomFile + " contains this property already" );
model.getBuild().setPluginManagement( pluginManagement ); getLogger().debug( "Creating archetype's pom" );