private String getArchetypePom() { return getGeneratedSourcesDirectory() + File.separator + Constants.ARCHETYPE_POM; }
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 Properties getRequiredProperties(ArchetypeDescriptor archetypeDescriptor, Properties properties) { Properties reversedProperties = new Properties(); reversedProperties.putAll(properties); reversedProperties.remove(Constants.ARCHETYPE_GROUP_ID); reversedProperties.remove(Constants.ARCHETYPE_ARTIFACT_ID); reversedProperties.remove(Constants.ARCHETYPE_VERSION); reversedProperties.setProperty(Constants.PACKAGE_IN_PATH_FORMAT, getPackageInPathFormat(properties.getProperty(Constants.PACKAGE))); return reversedProperties; }
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); }
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 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); log.debug("Found packaged Files:" + packagedFiles); List<String> unpackagedFiles = archetypeFilesResolver.getUnpackagedFiles(groupFiles, packageAsDir); log.debug("Found unpackaged Files:" + unpackagedFiles); Set<String> packagedExtensions = getExtensions(packagedFiles); log.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()) { log.debug("Found unpackaged extensions " + unpackagedExtensions); packagedFileSets.add(getUnpackagedFileSet(filtered, unpackagedExtensions, unpackagedFiles, group, packagedExtensions, defaultEncoding)); } return packagedFileSets; }
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"); } }
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; }
public ArchetypeCreationResult createArchetypeFromProject(ArchetypeCreationRequest request) { ArchetypeCreationResult result = new ArchetypeCreationResult(); creator.createArchetype(request, result); return result; }
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 ); } }
private String getReversedContent( String content, Properties properties ) { String result = StringUtils.replace( StringUtils.replace( content, "$", "${symbol_dollar}" ), "\\", "${symbol_escape}" ); result = getReversedPlainContent( result, properties ); // TODO: Replace velocity to a better engine... return "#set( $symbol_pound = '#' )\n" + "#set( $symbol_dollar = '$' )\n" + "#set( $symbol_escape = '\\' )\n" + StringUtils.replace( result, "#", "${symbol_pound}" ); }
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; }
private void rewritePluginReferences( Plugin plugin, String rootArtifactId, String groupId ) { if ( plugin.getArtifactId() != null && plugin.getArtifactId().indexOf( rootArtifactId ) >= 0 ) { if ( plugin.getGroupId() != null ) { String g = StringUtils.replace( plugin.getGroupId(), groupId, "${" + Constants.GROUP_ID + "}" ); plugin.setGroupId( g ); } plugin.setArtifactId( StringUtils.replace( plugin.getArtifactId(), rootArtifactId, "${rootArtifactId}" ) ); if ( plugin.getVersion() != null ) { plugin.setVersion( "${" + Constants.VERSION + "}" ); } } if ( plugin.getArtifactId() != null && "maven-ear-plugin".equals( plugin.getArtifactId() ) ) { rewriteEARPluginReferences( plugin, rootArtifactId, groupId ); } }
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 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); }
public ArchetypeCreationResult createArchetypeFromProject( ArchetypeCreationRequest request ) { ArchetypeCreationResult result = new ArchetypeCreationResult(); creator.createArchetype( request, result ); return result; }
private Properties getReversedProperties( ArchetypeDescriptor archetypeDescriptor, Properties properties ) { Properties reversedProperties = new Properties(); reversedProperties.putAll( properties ); reversedProperties.remove( Constants.ARCHETYPE_GROUP_ID ); reversedProperties.remove( Constants.ARCHETYPE_ARTIFACT_ID ); reversedProperties.remove( Constants.ARCHETYPE_VERSION ); String packageName = properties.getProperty( Constants.PACKAGE ); String packageInPathFormat = getPackageInPathFormat( packageName ); if ( !packageInPathFormat.equals( packageName ) ) { reversedProperties.setProperty( Constants.PACKAGE_IN_PATH_FORMAT, packageInPathFormat ); } // TODO check that reversed properties are all different and no one is a substring of another? // to avoid wrong variable replacements return reversedProperties; }
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 ); }