use of org.codehaus.plexus.util.xml.pull.XmlPullParserException in project maven-plugins by apache.
the class BundlePackMojo method readPom.
/**
* Read the POM file.
*
* @param pom The file to read
* @return A Maven Model
* @throws MojoExecutionException if something goes wrong when reading the file
*/
private Model readPom(File pom) throws MojoExecutionException {
Model model;
XmlStreamReader reader = null;
try {
reader = ReaderFactory.newXmlReader(pom);
model = new MavenXpp3Reader().read(reader);
reader.close();
reader = null;
} catch (XmlPullParserException e) {
throw new MojoExecutionException("Unable to parse POM at " + pom.getAbsolutePath() + ": " + e.getMessage(), e);
} catch (FileNotFoundException e) {
throw new MojoExecutionException("Unable to read POM at " + pom.getAbsolutePath() + ": " + e.getMessage(), e);
} catch (IOException e) {
throw new MojoExecutionException("Unable to read POM at " + pom.getAbsolutePath() + ": " + e.getMessage(), e);
} finally {
IOUtil.close(reader);
}
return model;
}
use of org.codehaus.plexus.util.xml.pull.XmlPullParserException in project maven-archetype by apache.
the class ArchetypeTest method testArchetype.
public void testArchetype() throws Exception {
FileUtils.deleteDirectory(getTestFile("target/quickstart"));
// ----------------------------------------------------------------------
// This needs to be encapsulated in a maven test case.
// ----------------------------------------------------------------------
ArtifactRepositoryLayout layout = (ArtifactRepositoryLayout) getContainer().lookup(ArtifactRepositoryLayout.ROLE);
String mavenRepoLocal = getTestFile("target/local-repository").toURI().toURL().toString();
ArtifactRepository localRepository = new DefaultArtifactRepository("local", mavenRepoLocal, layout);
List<ArtifactRepository> remoteRepositories = new ArrayList<ArtifactRepository>();
String mavenRepoRemote = getTestFile("src/test/repository").toURI().toURL().toString();
ArtifactRepository remoteRepository = new DefaultArtifactRepository("remote", mavenRepoRemote, layout);
remoteRepositories.add(remoteRepository);
ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
buildingRequest.setRemoteRepositories(remoteRepositories);
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
repositorySession.setLocalRepositoryManager(new SimpleLocalRepositoryManager(localRepository.getBasedir()));
buildingRequest.setRepositorySession(repositorySession);
ArchetypeGenerationRequest request = new ArchetypeGenerationRequest().setProjectBuildingRequest(buildingRequest).setPackage("org.apache.maven.quickstart").setGroupId("maven").setArtifactId("quickstart").setVersion("1.0-alpha-1-SNAPSHOT").setArchetypeGroupId("org.apache.maven.archetypes").setArchetypeArtifactId("maven-archetype-quickstart").setArchetypeVersion("1.0-alpha-1-SNAPSHOT").setLocalRepository(localRepository).setRemoteArtifactRepositories(remoteRepositories).setOutputDirectory(getTestFile("target").getAbsolutePath());
// parameters.put( "name", "jason" );
archetype.createArchetype(request, remoteRepository);
// ----------------------------------------------------------------------
// Set up the Velocity context
// ----------------------------------------------------------------------
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("basedir", request.getOutputDirectory());
parameters.put("package", request.getPackage());
parameters.put("packageName", request.getPackage());
parameters.put("groupId", request.getGroupId());
parameters.put("artifactId", request.getArtifactId());
parameters.put("version", request.getVersion());
Context context = new VelocityContext();
for (Map.Entry<String, Object> entry : parameters.entrySet()) {
context.put(entry.getKey(), entry.getValue());
}
// ----------------------------------------------------------------------
// Validate POM generation
// ----------------------------------------------------------------------
ArtifactFactory artifactFactory = (ArtifactFactory) lookup(ArtifactFactory.class.getName());
Artifact archetypeArtifact = artifactFactory.createArtifact(request.getArchetypeGroupId(), request.getArchetypeArtifactId(), request.getArchetypeVersion(), Artifact.SCOPE_RUNTIME, "jar");
StringWriter writer = new StringWriter();
ClassLoader old = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(getContextClassloader(archetypeArtifact, localRepository, remoteRepositories));
try {
VelocityComponent velocity = (VelocityComponent) lookup(VelocityComponent.class.getName());
velocity.getEngine().mergeTemplate(OldArchetype.ARCHETYPE_RESOURCES + "/" + OldArchetype.ARCHETYPE_POM, context, writer);
} finally {
Thread.currentThread().setContextClassLoader(old);
}
Model generatedModel, templateModel;
try {
StringReader strReader = new StringReader(writer.toString());
MavenXpp3Reader reader = new MavenXpp3Reader();
templateModel = reader.read(strReader);
} catch (IOException e) {
throw new ArchetypeTemplateProcessingException("Error reading template POM", e);
}
File artifactDir = getTestFile("target", (String) parameters.get("artifactId"));
File pomFile = getTestFile(artifactDir.getAbsolutePath(), OldArchetype.ARCHETYPE_POM);
try {
FileReader pomReader = new FileReader(pomFile);
MavenXpp3Reader reader = new MavenXpp3Reader();
generatedModel = reader.read(pomReader);
} catch (IOException e) {
throw new ArchetypeTemplateProcessingException("Error reading generated POM", e);
} catch (XmlPullParserException e) {
throw new ArchetypeTemplateProcessingException("Error reading generated POM", e);
}
assertEquals("Generated POM ArtifactId is not equivalent to expected result.", generatedModel.getArtifactId(), templateModel.getArtifactId());
assertEquals("Generated POM GroupId is not equivalent to expected result.", generatedModel.getGroupId(), templateModel.getGroupId());
assertEquals("Generated POM Id is not equivalent to expected result.", generatedModel.getId(), templateModel.getId());
assertEquals("Generated POM Version is not equivalent to expected result.", generatedModel.getVersion(), templateModel.getVersion());
assertEquals("Generated POM Packaging is not equivalent to expected result.", generatedModel.getPackaging(), templateModel.getPackaging());
assertEquals("Generated POM Developers is not equivalent to expected result.", generatedModel.getDevelopers(), templateModel.getDevelopers());
assertEquals("Generated POM Scm is not equivalent to expected result.", generatedModel.getScm(), templateModel.getScm());
}
use of org.codehaus.plexus.util.xml.pull.XmlPullParserException in project maven-archetype by apache.
the class DefaultArchetypeGenerator method generateArchetype.
public void generateArchetype(ArchetypeGenerationRequest request, ArchetypeGenerationResult result) {
try {
File archetypeFile = getArchetypeFile(request, request.getLocalRepository());
generateArchetype(request, archetypeFile, result);
} catch (IOException ex) {
result.setCause(ex);
} catch (ArchetypeException ex) {
result.setCause(ex);
} catch (XmlPullParserException ex) {
result.setCause(ex);
} catch (DocumentException ex) {
result.setCause(ex);
}
}
use of org.codehaus.plexus.util.xml.pull.XmlPullParserException in project maven-archetype by apache.
the class ArchetypeDescriptorBuilder method addTestResourceToDescriptor.
/**
* Adds the test-resource element <code>resource</code> to the list of test-resources in the
* <code>descriptor</code> and sets its <code>TemplateDescriptor</code> to
* <i>filtered</i> if the attribute <code>filtered</code> was not
* specified or its value is <code>"true"</code>, or <code>false</code>
* if its value is <code>"false"</code>, and the encoding specified
* in the <code>encoding</code> attribute or the Java virtual machine's default if
* it is not defined. If the <code>resource</code> is a property file (ends in
* <code>.properties</code>) its encoding will be set to <code>iso-8859-1</code>
* even if some other encoding is specified in the attribute.
*
* @param testResource a <code><resource></code> element from the <code><testResources></code>
* @param descriptor the <code>ArchetypeDescriptor</code> to add the test-resource template to.
* @throws XmlPullParserException if the encoding specified is not valid or supported or if the
* value of the attribute <code>filtered</code> is no valid.
*/
private static void addTestResourceToDescriptor(Xpp3Dom testResource, ArchetypeDescriptor descriptor) throws XmlPullParserException {
descriptor.addTestResource(testResource.getValue());
if (testResource.getAttribute("filtered") != null) {
TemplateDescriptor testResourceDesc = descriptor.getTestResourceDescriptor(testResource.getValue());
try {
testResourceDesc.setFiltered(getValueFilteredAttribute(testResource.getAttribute("filtered")));
} catch (IllegalArgumentException iae) {
throw new XmlPullParserException(iae.getMessage());
}
}
if (testResource.getAttribute("encoding") != null) {
TemplateDescriptor testResourceDesc = descriptor.getTestResourceDescriptor(testResource.getValue());
try {
testResourceDesc.setEncoding(testResource.getAttribute("encoding"));
} catch (IllegalCharsetNameException icne) {
throw new XmlPullParserException(testResource.getAttribute("encoding") + " is not a valid encoding.");
} catch (UnsupportedCharsetException uce) {
throw new XmlPullParserException(testResource.getAttribute("encoding") + " is not a supported encoding.");
}
}
if (testResource.getValue().endsWith(".properties")) {
TemplateDescriptor testResourceDesc = descriptor.getTestResourceDescriptor(testResource.getValue());
testResourceDesc.setEncoding("iso-8859-1");
}
}
use of org.codehaus.plexus.util.xml.pull.XmlPullParserException in project maven-archetype by apache.
the class ArchetypeDescriptorBuilder method addSourceToDescriptor.
/**
* Adds the source element <code>source</code> to the list of sources in the
* <code>descriptor</code> and sets its <code>TemplateDescriptor</code> to
* <i>filtered</i> and with the encoding specified in the <code>encoding</code>
* attribute or the Java virtual machine's default if it is not defined.
*
* @param source a <code><source></code> element from the <code><sources></code>
* @param descriptor the <code>ArchetypeDescriptor</code> to add the source template to.
* @throws XmlPullParserException if the encoding specified is not valid or supported.
*/
private static void addSourceToDescriptor(Xpp3Dom source, ArchetypeDescriptor descriptor) throws XmlPullParserException {
descriptor.addSource(source.getValue());
TemplateDescriptor sourceDesc = descriptor.getSourceDescriptor(source.getValue());
sourceDesc.setFiltered(true);
if (source.getAttribute("encoding") != null) {
try {
sourceDesc.setEncoding(source.getAttribute("encoding"));
} catch (IllegalCharsetNameException icne) {
throw new XmlPullParserException(source.getAttribute("encoding") + " is not a valid encoding.");
} catch (UnsupportedCharsetException uce) {
throw new XmlPullParserException(source.getAttribute("encoding") + " is not a supported encoding.");
}
}
}
Aggregations