private void copyFiles(String directory, List<String> fileSetResources, boolean packaged, String packageName, File outputDirectoryFile, ZipFile archetypeZipFile, String moduleOffset, boolean failIfExists, Context context) throws OutputFileExists, IOException { for (String template : fileSetResources) { File outputFile=getOutputFile(template, directory, outputDirectoryFile, packaged, packageName, moduleOffset, context); copyFile(outputFile, template, failIfExists, archetypeZipFile); } }
private void processPom( Context context, File pom, String moduleOffset ) throws OutputFileExists, ArchetypeGenerationFailure { getLogger().debug( "Processing pom " + pom ); processTemplate( pom, context, Constants.ARCHETYPE_RESOURCES + getOffsetSeparator( moduleOffset ) + Constants.ARCHETYPE_POM, getEncoding( null ), true ); }
private File getOutputFile( String template, String directory, File outputDirectoryFile, boolean packaged, String packageName, String moduleOffset, Context context ) { String templateName = StringUtils.replaceOnce( template, directory, "" ); String outputFileName = directory + "/" + ( packaged ? getPackageAsDirectory( packageName ) : "" ) + "/" + templateName.substring( moduleOffset.length() ); outputFileName = replaceFilenameTokens( outputFileName, context ); return new File( outputDirectoryFile, outputFileName ); }
private void processFileSet(String directory, List<String> fileSetResources, boolean packaged, String packageName, Context context, File outputDirectoryFile, String moduleOffset, String archetypeEncoding, boolean failIfExists) throws Exception { for (String template : fileSetResources) { File outputFile=getOutputFile(template, directory, outputDirectoryFile, packaged, packageName, moduleOffset, context); processTemplate(outputFile, context, Constants.ARCHETYPE_RESOURCES + "/" + template, archetypeEncoding, failIfExists); } }
ArchetypeDescriptor archetypeDescriptor=archetypeArtifactManager.getFileSetArchetypeDescriptor(archetypeFile); if (!isArchetypeConfigured(archetypeDescriptor, request)) { if (request.isInteractiveMode()) { throw new ArchetypeNotConfigured("No archetype was chosen", null); Context context=prepareVelocityContext(request); processPomWithMerge(context, pom, ""); processArchetypeTemplatesWithWarning(archetypeDescriptor, archetypeResources, archetypeZipFile, "", context, packageName, outputDirectoryFile); processPomWithMerge(context, basedirPom, ""); processArchetypeTemplatesWithWarning(archetypeDescriptor, archetypeResources, archetypeZipFile, "", context, packageName, new File(basedir)); processPom(context, pom, ""); processArchetypeTemplates(archetypeDescriptor, archetypeResources, archetypeZipFile, "", context, packageName, outputDirectoryFile); processFilesetModule(artifactId, artifactId, archetypeResources, pom, archetypeZipFile, "", basedirPom, outputDirectoryFile, packageName, archetypeDescriptor, context);
if ( iterator.hasNext() ) getLogger().debug( "Processing filesets" + "\n " + archetypeResources ); getOutputFile( moduleOffset, fileSet.getDirectory(), outputDirectoryFile, fileSet.isPackaged(), packageName, moduleOffset, context ).mkdirs(); getLogger().debug( " Processing fileset " + fileSet + " -> " + fileSetResources.size() + ":\n " + fileSetResources ); processFileSet( fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName, context, outputDirectoryFile, moduleOffset, getEncoding( fileSet.getEncoding() ), failIfExists ); getLogger().debug( " Processed " + processed + " files." ); getLogger().debug( " Copying fileset " + fileSet + " -> " + fileSetResources.size() + ":\n " + fileSetResources ); int copied = copyFiles( fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName, outputDirectoryFile, archetypeZipFile, moduleOffset, failIfExists, context ); getLogger().debug( " Copied " + copied + " files." ); getLogger().debug( "Processed " + count + " filesets" );
private void processPom(Context context, File pom, String moduleOffset) throws Exception { log.debug("Processing pom " + pom); processTemplate(pom, context, Constants.ARCHETYPE_RESOURCES + getOffsetSeparator(moduleOffset) + Constants.ARCHETYPE_POM, getEncoding(null), true); }
context.put( Constants.VERSION, request.getVersion() ); context.put( Constants.PACKAGE, request.getPackage() ); final String packageInPathFormat = getPackageInPathFormat( request.getPackage() ); context.put( Constants.PACKAGE_IN_PATH_FORMAT, packageInPathFormat ); if ( getLogger().isInfoEnabled() ) getLogger().info( "----------------------------------------------------------------------------" ); getLogger().info( "Using following parameters for creating project from Archetype: " + request.getArchetypeArtifactId() + ":" + request.getArchetypeVersion() ); getLogger().info( "----------------------------------------------------------------------------" ); getLogger().info( "Parameter: " + Constants.GROUP_ID + ", Value: " + request.getGroupId() ); getLogger().info( "Parameter: " + Constants.ARTIFACT_ID + ", Value: " + request.getArtifactId() ); getLogger().info( "Parameter: " + Constants.VERSION + ", Value: " + request.getVersion() ); getLogger().info( "Parameter: " + Constants.PACKAGE + ", Value: " + request.getPackage() ); getLogger().info( "Parameter: " + Constants.PACKAGE_IN_PATH_FORMAT + ", Value: " + packageInPathFormat ); if ( maybeVelocityExpression( value ) ) value = evaluateExpression( context, key, value ); if ( getLogger().isInfoEnabled() ) getLogger().info( "Parameter: " + key + ", Value: " + value );
private Context prepareVelocityContext(ArchetypeGenerationRequest request) { Context context=new VelocityContext(); context.put(Constants.GROUP_ID, request.getGroupId()); context.put(Constants.ARTIFACT_ID, request.getArtifactId()); context.put(Constants.VERSION, request.getVersion()); context.put(Constants.PACKAGE, request.getPackage()); context.put(Constants.PACKAGE_IN_PATH_FORMAT, getPackageInPathFormat(request.getPackage())); for (Object obj : request.getProperties().keySet()) { String key = String.valueOf(obj); Object value=request.getProperties().getProperty(key); context.put(key, value); } return context; }
if ( !isArchetypeConfigured( archetypeDescriptor, request ) ) Context context = prepareVelocityContext( request ); getLogger().debug( "Processing partial archetype " + archetypeDescriptor.getName() ); if ( outputDirectoryFile.exists() ) processPomWithMerge( context, pom, "" ); processArchetypeTemplatesWithWarning( archetypeDescriptor, archetypeResources, archetypeZipFile, "", context, packageName, outputDirectoryFile ); processPomWithMerge( context, basedirPom, "" ); processArchetypeTemplatesWithWarning( archetypeDescriptor, archetypeResources, archetypeZipFile, "", context, packageName, new File( request.getOutputDirectory() ) ); processPom( context, pom, "" ); processArchetypeTemplates( archetypeDescriptor, archetypeResources, archetypeZipFile, "", context, packageName, outputDirectoryFile ); getLogger().info( "Modules ignored in partial mode" ); getLogger().debug( "Processing complete archetype " + archetypeDescriptor.getName() ); if ( outputDirectoryFile.exists() && pom.exists() ) getLogger().warn( "The directory " + outputDirectoryFile.getPath() + " already exists." );
private void processTemplates(String packageName, File outputDirectoryFile, Context context, AbstractArchetypeDescriptor archetypeDescriptor, List<String> archetypeResources, ZipFile archetypeZipFile, String moduleOffset, boolean failIfExists) throws Exception { for (FileSet fileSet : archetypeDescriptor.getFileSets()) { List<String> fileSetResources=archetypeFilesResolver.filterFiles(moduleOffset, fileSet, archetypeResources); // This creates an empty directory, even if there is no file to process // Fix for ARCHETYPE-57 getOutputFile(moduleOffset, fileSet.getDirectory(), outputDirectoryFile, fileSet.isPackaged(), packageName, moduleOffset, context).mkdirs(); if (fileSet.isFiltered()) { log.debug("Processing fileset " + fileSet + "\n\n\n\n" + fileSetResources + "\n\n" + archetypeResources + "\n\n"); processFileSet(fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName, context, outputDirectoryFile, moduleOffset, getEncoding(fileSet.getEncoding()), failIfExists); log.debug("Processed " + fileSetResources.size() + " files"); } else { log.debug("Copying fileset " + fileSet); copyFiles(fileSet.getDirectory(), fileSetResources, fileSet.isPackaged(), packageName, outputDirectoryFile, archetypeZipFile, moduleOffset, failIfExists, context); log.debug("Copied " + fileSetResources.size() + " files"); } } }
private void processPomWithParent(Context context, File pom, String moduleOffset, File basedirPom, String moduleId) throws Exception, IOException, InvalidPackaging, ArchetypeGenerationFailure { log.debug("Processing pom " + pom + " with parent " + basedirPom); processTemplate(pom, context, Constants.ARCHETYPE_RESOURCES + getOffsetSeparator(moduleOffset) + Constants.ARCHETYPE_POM, getEncoding(null), true); log.debug("Adding module " + moduleId); pomManager.addModule(basedirPom, moduleId); pomManager.addParent(pom, basedirPom); }
private int processFileSet( String directory, List<String> fileSetResources, boolean packaged, String packageName, Context context, File outputDirectoryFile, String moduleOffset, String archetypeEncoding, boolean failIfExists ) throws OutputFileExists, ArchetypeGenerationFailure { int count = 0; for ( String template : fileSetResources ) { File outputFile = getOutputFile( template, directory, outputDirectoryFile, packaged, packageName, moduleOffset, context ); if ( processTemplate( outputFile, context, Constants.ARCHETYPE_RESOURCES + "/" + template, archetypeEncoding, failIfExists ) ) { count++; } } return count; }
private void processPomWithParent( Context context, File pom, String moduleOffset, File basedirPom, String moduleId ) throws OutputFileExists, XmlPullParserException, DocumentException, IOException, InvalidPackaging, ArchetypeGenerationFailure { getLogger().debug( "Processing pom " + pom + " with parent " + basedirPom ); processTemplate( pom, context, Constants.ARCHETYPE_RESOURCES + getOffsetSeparator( moduleOffset ) + Constants.ARCHETYPE_POM, getEncoding( null ), true ); getLogger().debug( "Adding module " + moduleId ); pomManager.addModule( basedirPom, moduleId ); pomManager.addParent( pom, basedirPom ); }
private File getOutputFile(String template, String directory, File outputDirectoryFile, boolean packaged, String packageName, String moduleOffset, Context context) { String templateName=StringUtils.replaceOnce(template, directory, ""); String outputFileName=directory + "/" + (packaged ? getPackageAsDirectory(packageName) : "") + "/" + templateName.substring(moduleOffset.length()); if (TOKEN_PATTERN.matcher(outputFileName).matches()) { outputFileName=replaceFilenameTokens(outputFileName, context); } File outputFile=new File(outputDirectoryFile, outputFileName); return outputFile; }
private int copyFiles( String directory, List<String> fileSetResources, boolean packaged, String packageName, File outputDirectoryFile, ZipFile archetypeZipFile, String moduleOffset, boolean failIfExists, Context context ) throws OutputFileExists, FileNotFoundException, IOException { int count = 0; for ( String template : fileSetResources ) { File outputFile = getOutputFile( template, directory, outputDirectoryFile, packaged, packageName, moduleOffset, context ); if ( copyFile( outputFile, template, failIfExists, archetypeZipFile ) ) { count++; } } return count; }
private void processPomWithMerge(Context context, File pom, String moduleOffset) throws Exception { log.debug("Processing pom " + pom + " with merge"); File temporaryPom=getTemporaryFile(pom); processTemplate(temporaryPom, context, Constants.ARCHETYPE_RESOURCES + getOffsetSeparator(moduleOffset) + Constants.ARCHETYPE_POM, getEncoding(null), true); pomManager.mergePoms(pom, temporaryPom); // getTemporaryFile sets deleteOnExit. Lets try to delete and then make sure deleteOnExit is // still set. Windows has issues deleting files with certain JDKs. try { FileUtils.forceDelete(temporaryPom); } catch (IOException e) { temporaryPom.deleteOnExit(); } }
private void processPomWithMerge( Context context, File pom, String moduleOffset ) throws OutputFileExists, IOException, XmlPullParserException, ArchetypeGenerationFailure { getLogger().debug( "Processing pom " + pom + " with merge" ); File temporaryPom = getTemporaryFile( pom ); processTemplate( temporaryPom, context, Constants.ARCHETYPE_RESOURCES + getOffsetSeparator( moduleOffset ) + Constants.ARCHETYPE_POM, getEncoding( null ), true ); pomManager.mergePoms( pom, temporaryPom ); // getTemporaryFile sets deleteOnExit. Lets try to delete and then make sure deleteOnExit is // still set. Windows has issues deleting files with certain JDKs. try { FileUtils.forceDelete( temporaryPom ); } catch ( IOException e ) { temporaryPom.deleteOnExit(); } }