You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2017/12/20 09:26:42 UTC
[maven-ant-plugin] 24/50: MANT-2: error "maven.repo.local" property
in the ant file
This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to annotated tag maven-ant-plugin-2.0
in repository https://gitbox.apache.org/repos/asf/maven-ant-plugin.git
commit b2e67ec2459cb5fb6c4a714ca2b8b70d385ab30a
Author: Vincent Siveton <vs...@apache.org>
AuthorDate: Sat Sep 23 17:17:33 2006 +0000
MANT-2: error "maven.repo.local" property in the ant file
o created a build.properties as Brett suggested
o using MavenSettings to populate properties
o updated build.classpath and build.test.classpath in the build.xml (AntMojo @requiresDependencyResolution test)
o updated test case
o improved code lisibility
git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-ant-plugin@449275 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/maven/plugin/ant/AntBuildWriter.java | 579 +++++++++++++++------
.../java/org/apache/maven/plugin/ant/AntMojo.java | 15 +-
.../org/apache/maven/plugin/ant/AntMojoTest.java | 12 +-
.../plugin/ant/stubs/AntTestMavenProjectStub.java | 38 +-
.../maven/plugin/ant/stubs/SettingsStub.java | 43 ++
.../unit/ant-test/ant-test-plugin-config.xml | 21 +-
.../unit/ant-test/src/main/resources/main.txt | 1 +
.../unit/ant-test/src/test/resources/test.txt | 1 +
8 files changed, 521 insertions(+), 189 deletions(-)
diff --git a/src/main/java/org/apache/maven/plugin/ant/AntBuildWriter.java b/src/main/java/org/apache/maven/plugin/ant/AntBuildWriter.java
index a745244..a728481 100644
--- a/src/main/java/org/apache/maven/plugin/ant/AntBuildWriter.java
+++ b/src/main/java/org/apache/maven/plugin/ant/AntBuildWriter.java
@@ -17,6 +17,7 @@ package org.apache.maven.plugin.ant;
*/
import java.io.File;
+import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
@@ -26,11 +27,13 @@ import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
+import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Repository;
import org.apache.maven.model.Resource;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.settings.Settings;
import org.apache.maven.wagon.PathUtils;
import org.apache.tools.ant.Main;
import org.codehaus.plexus.util.IOUtil;
@@ -50,20 +53,35 @@ public class AntBuildWriter
/**
* The default line indenter
*/
- protected final static int DEFAULT_INDENTATION_SIZE = 2;
+ protected static final int DEFAULT_INDENTATION_SIZE = 2;
+
+ /**
+ * The default build file name (build.xml)
+ * @see Main#DEFAULT_BUILD_FILENAME
+ */
+ protected static final String DEFAULT_BUILD_FILENAME = Main.DEFAULT_BUILD_FILENAME;
+
+ /**
+ * The default build properties file name
+ */
+ protected static final String DEFAULT_PROPERTIES_FILENAME = "build.properties";
private MavenProject project;
private File localRepository;
+ private Settings settings;
+
/**
* @param project
* @param localRepository
+ * @param settings
*/
- public AntBuildWriter( MavenProject project, File localRepository )
+ public AntBuildWriter( MavenProject project, File localRepository, Settings settings )
{
this.project = project;
this.localRepository = localRepository;
+ this.settings = settings;
}
// ----------------------------------------------------------------------
@@ -74,7 +92,7 @@ public class AntBuildWriter
throws IOException
{
// TODO: parameter
- FileWriter w = new FileWriter( new File( project.getBasedir(), Main.DEFAULT_BUILD_FILENAME ) );
+ FileWriter w = new FileWriter( new File( project.getBasedir(), DEFAULT_BUILD_FILENAME ) );
XMLWriter writer = new PrettyPrintXMLWriter( w, StringUtils.repeat( " ", DEFAULT_INDENTATION_SIZE ), "UTF-8",
null );
@@ -122,12 +140,6 @@ public class AntBuildWriter
writeCompileTarget( writer, compileSourceRoots );
// ----------------------------------------------------------------------
- // <target name="jar" />
- // ----------------------------------------------------------------------
- // TODO: what if type is not JAR?
- writeJarTarget( writer );
-
- // ----------------------------------------------------------------------
// <target name="compile-tests" />
// ----------------------------------------------------------------------
@@ -141,6 +153,12 @@ public class AntBuildWriter
writeTestTargets( writer, testCompileSourceRoots );
// ----------------------------------------------------------------------
+ // <target name="jar" />
+ // ----------------------------------------------------------------------
+ // TODO: what if type is not JAR?
+ writeJarTarget( writer );
+
+ // ----------------------------------------------------------------------
// <target name="get-deps" />
// ----------------------------------------------------------------------
writeGetDepsTarget( writer );
@@ -150,6 +168,280 @@ public class AntBuildWriter
IOUtil.close( w );
}
+ protected void writeBuildProperties()
+ throws IOException
+ {
+ FileOutputStream os = new FileOutputStream( new File( project.getBasedir(), DEFAULT_PROPERTIES_FILENAME ) );
+ Properties properties = new Properties();
+
+ // ----------------------------------------------------------------------
+ // Build properties
+ // ----------------------------------------------------------------------
+
+ addProperty( properties, "maven.build.finalName", PathUtils.toRelative( project.getBasedir(), project
+ .getBuild().getFinalName() ) );
+
+ // target
+ addProperty( properties, "maven.build.dir", PathUtils.toRelative( project.getBasedir(), project.getBuild()
+ .getDirectory() ) );
+
+ // ${maven.build.dir}/classes
+ addProperty( properties, "maven.build.outputDir", "${maven.build.dir}/"
+ + PathUtils.toRelative( new File( project.getBasedir(), properties.getProperty( "maven.build.dir" ) ),
+ project.getBuild().getOutputDirectory() ) );
+ // src/main/java
+ if ( !project.getCompileSourceRoots().isEmpty() )
+ {
+ String[] compileSourceRoots = (String[]) project.getCompileSourceRoots().toArray( new String[0] );
+ for ( int i = 0; i < compileSourceRoots.length; i++ )
+ {
+ addProperty( properties, "maven.build.srcDir." + i, PathUtils.toRelative( project.getBasedir(),
+ compileSourceRoots[i] ) );
+ }
+ }
+ // src/main/resources
+ if ( project.getBuild().getResources() != null )
+ {
+ Resource[] array = (Resource[]) project.getBuild().getResources().toArray( new Resource[0] );
+ for ( int i = 0; i < array.length; i++ )
+ {
+ addProperty( properties, "maven.build.resourceDir." + i, PathUtils.toRelative( project.getBasedir(),
+ array[i].getDirectory() ) );
+ }
+ }
+
+ // ${maven.build.dir}/test-classes
+ addProperty( properties, "maven.build.testOutputDir", "${maven.build.dir}/"
+ + PathUtils.toRelative( new File( project.getBasedir(), properties.getProperty( "maven.build.dir" ) ),
+ project.getBuild().getTestOutputDirectory() ) );
+ // src/test/java
+ if ( !project.getTestCompileSourceRoots().isEmpty() )
+ {
+ String[] compileSourceRoots = (String[]) project.getTestCompileSourceRoots().toArray( new String[0] );
+ for ( int i = 0; i < compileSourceRoots.length; i++ )
+ {
+ addProperty( properties, "maven.build.testDir." + i, PathUtils.toRelative( project.getBasedir(),
+ compileSourceRoots[i] ) );
+ }
+ }
+ // src/test/resources
+ if ( project.getBuild().getTestResources() != null )
+ {
+ Resource[] array = (Resource[]) project.getBuild().getTestResources().toArray( new Resource[0] );
+ for ( int i = 0; i < array.length; i++ )
+ {
+ addProperty( properties, "maven.build.testResourceDir." + i, PathUtils
+ .toRelative( project.getBasedir(), array[i].getDirectory() ) );
+ }
+ }
+
+ // ----------------------------------------------------------------------
+ // Settings properties
+ // ----------------------------------------------------------------------
+
+ addProperty( properties, "maven.settings.offline", String.valueOf( settings.isOffline() ) );
+ addProperty( properties, "maven.settings.interactiveMode", String.valueOf( settings.isInteractiveMode() ) );
+ addProperty( properties, "maven.repo.local", localRepository.getAbsolutePath() );
+
+ properties.store( os, "Generated by Maven Ant Plugin" );
+ }
+
+ private void writeProperties( XMLWriter writer )
+ {
+ // TODO: optional in m1
+ // TODO: USD properties
+ AntBuildWriterUtil.writeCommentText( writer, "Build environnement properties", 1 );
+
+ // ----------------------------------------------------------------------
+ // File properties to override local properties
+ // ----------------------------------------------------------------------
+
+ writer.startElement( "property" );
+ writer.addAttribute( "file", "${user.home}/.m2/maven.properties" );
+ writer.endElement(); // property
+
+ writer.startElement( "property" );
+ writer.addAttribute( "file", "build.properties" );
+ writer.endElement(); // property
+
+ // ----------------------------------------------------------------------
+ // Build properties
+ // ----------------------------------------------------------------------
+
+ AntBuildWriterUtil.writeLineBreak( writer, 2, 1 );
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.finalName" );
+ writer.addAttribute( "value", project.getBuild().getFinalName() );
+ writer.endElement(); // property
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.dir" );
+ writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), project.getBuild().getDirectory() ) );
+ writer.endElement(); // property
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.outputDir" );
+ writer.addAttribute( "value", "${maven.build.dir}/"
+ + PathUtils.toRelative( new File( project.getBuild().getDirectory() ), project.getBuild()
+ .getOutputDirectory() ) );
+ writer.endElement(); // property
+
+ if ( !project.getCompileSourceRoots().isEmpty() )
+ {
+ String[] compileSourceRoots = (String[]) project.getCompileSourceRoots().toArray( new String[0] );
+ for ( int i = 0; i < compileSourceRoots.length; i++ )
+ {
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.srcDir." + i );
+ writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), compileSourceRoots[i] ) );
+ writer.endElement(); // property
+ }
+ }
+
+ if ( project.getBuild().getResources() != null )
+ {
+ Resource[] array = (Resource[]) project.getBuild().getResources().toArray( new Resource[0] );
+ for ( int i = 0; i < array.length; i++ )
+ {
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.resourceDir." + i );
+ writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), array[i].getDirectory() ) );
+ writer.endElement(); // property
+ }
+ }
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.testOutputDir" );
+ writer.addAttribute( "value", "${maven.build.dir}/"
+ + PathUtils.toRelative( new File( project.getBuild().getDirectory() ), project.getBuild()
+ .getTestOutputDirectory() ) );
+ writer.endElement(); // property
+
+ if ( !project.getTestCompileSourceRoots().isEmpty() )
+ {
+ String[] compileSourceRoots = (String[]) project.getTestCompileSourceRoots().toArray( new String[0] );
+ for ( int i = 0; i < compileSourceRoots.length; i++ )
+ {
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.testDir." + i );
+ writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), compileSourceRoots[i] ) );
+ writer.endElement(); // property
+ }
+ }
+
+ if ( project.getBuild().getResources() != null )
+ {
+ Resource[] array = (Resource[]) project.getBuild().getResources().toArray( new Resource[0] );
+ for ( int i = 0; i < array.length; i++ )
+ {
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.build.testResourceDir." + i );
+ writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), array[i].getDirectory() ) );
+ writer.endElement(); // property
+ }
+ }
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.test.reports" );
+ writer.addAttribute( "value", "${maven.build.dir}/test-reports" );
+ writer.endElement(); // property
+
+ // ----------------------------------------------------------------------
+ // Setting properties
+ // ----------------------------------------------------------------------
+
+ AntBuildWriterUtil.writeLineBreak( writer, 2, 1 );
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.repo.local" );
+ writer.addAttribute( "value", localRepository.getAbsolutePath() );
+ writer.endElement(); // property
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.settings.offline" );
+ writer.addAttribute( "value", String.valueOf( settings.isOffline() ) );
+ writer.endElement(); // property
+
+ writer.startElement( "property" );
+ writer.addAttribute( "name", "maven.settings.interactiveMode" );
+ writer.addAttribute( "value", String.valueOf( settings.isInteractiveMode() ) );
+ writer.endElement(); // property
+
+ AntBuildWriterUtil.writeLineBreak( writer );
+ }
+
+ private void writeBuildPathDefinition( XMLWriter writer )
+ {
+ AntBuildWriterUtil.writeCommentText( writer, "Defining classpaths", 1 );
+
+ writer.startElement( "path" );
+ writer.addAttribute( "id", "build.classpath" );
+ writer.startElement( "fileset" );
+ writer.addAttribute( "dir", "${maven.repo.local}" );
+
+ for ( Iterator i = project.getCompileArtifacts().iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+ writer.startElement( "include" );
+ writer.addAttribute( "name", PathUtils.toRelative( localRepository, artifact.getFile().getPath() ) );
+ writer.endElement(); // include
+ }
+ writer.endElement(); // fileset
+ writer.endElement(); // path
+
+ writer.startElement( "path" );
+ writer.addAttribute( "id", "build.test.classpath" );
+ writer.startElement( "fileset" );
+ writer.addAttribute( "dir", "${maven.repo.local}" );
+
+ for ( Iterator i = project.getTestArtifacts().iterator(); i.hasNext(); )
+ {
+ Artifact artifact = (Artifact) i.next();
+ writer.startElement( "include" );
+ writer.addAttribute( "name", PathUtils.toRelative( localRepository, artifact.getFile().getPath() ) );
+ writer.endElement(); // include
+ }
+ writer.endElement(); // fileset
+ writer.endElement(); // path
+
+ AntBuildWriterUtil.writeLineBreak( writer );
+ }
+
+ private void writeCleanTarget( XMLWriter writer )
+ {
+ AntBuildWriterUtil.writeCommentText( writer, "Cleaning up target", 1 );
+
+ writer.startElement( "target" );
+ writer.addAttribute( "name", "clean" );
+ writer.addAttribute( "description", "Clean the output directory" );
+
+ writer.startElement( "delete" );
+ writer.addAttribute( "dir", "${maven.build.dir}" );
+ writer.endElement(); // delete
+
+ writer.endElement(); // target
+
+ AntBuildWriterUtil.writeLineBreak( writer );
+ }
+
+ private void writeCompileTarget( XMLWriter writer, List compileSourceRoots )
+ {
+ AntBuildWriterUtil.writeCommentText( writer, "Compilation target", 1 );
+
+ writer.startElement( "target" );
+ writer.addAttribute( "name", "compile" );
+ writer.addAttribute( "depends", "get-deps" );
+ writer.addAttribute( "description", "Compile the code" );
+
+ writeCompileTasks( writer, project.getBasedir(), "${maven.build.outputDir}", compileSourceRoots, project
+ .getBuild().getResources(), null, false );
+
+ writer.endElement(); // target
+
+ AntBuildWriterUtil.writeLineBreak( writer );
+ }
+
private void writeCompileTestsTarget( XMLWriter writer, List testCompileSourceRoots )
{
AntBuildWriterUtil.writeCommentText( writer, "Test-compilation target", 1 );
@@ -160,8 +452,8 @@ public class AntBuildWriter
AntBuildWriterUtil.addWrapAttribute( writer, "target", "description", "Compile the test code", 2 );
AntBuildWriterUtil.addWrapAttribute( writer, "target", "if", "junit.present", 2 );
- writeCompileTasks( writer, project.getBasedir(), "${maven.test.output}", testCompileSourceRoots, project
- .getBuild().getTestResources(), "${maven.build.output}" );
+ writeCompileTasks( writer, project.getBasedir(), "${maven.build.testOutputDir}", testCompileSourceRoots,
+ project.getBuild().getTestResources(), "${maven.build.outputDir}", true );
writer.endElement(); // target
@@ -207,23 +499,24 @@ public class AntBuildWriter
writer.startElement( "classpath" );
writer.startElement( "path" );
- writer.addAttribute( "refid", "build.classpath" );
+ writer.addAttribute( "refid", "build.test.classpath" );
writer.endElement(); // path
writer.startElement( "pathelement" );
- writer.addAttribute( "location", "${maven.build.output}" );
+ writer.addAttribute( "location", "${maven.build.outputDir}" );
writer.endElement(); // pathelement
writer.startElement( "pathelement" );
- writer.addAttribute( "location", "${maven.test.output}" );
+ writer.addAttribute( "location", "${maven.build.testOutputDir}" );
writer.endElement(); // pathelement
writer.endElement(); // classpath
writer.startElement( "batchtest" );
writer.addAttribute( "todir", "${maven.test.reports}" );
- for ( Iterator i = testCompileSourceRoots.iterator(); i.hasNext(); )
+
+ String[] compileSourceRoots = (String[]) testCompileSourceRoots.toArray( new String[0] );
+ for ( int i = 0; i < compileSourceRoots.length; i++ )
{
writer.startElement( "fileset" );
- String testSrcDir = (String) i.next();
- writer.addAttribute( "dir", PathUtils.toRelative( project.getBasedir(), testSrcDir ) );
+ writer.addAttribute( "dir", "${maven.build.testDir." + i + "}" );
/* TODO: need to get these from the test plugin somehow?
UnitTest unitTest = project.getBuild().getUnitTest();
writeIncludesExcludes( writer, unitTest.getIncludes(), unitTest.getExcludes() );
@@ -285,8 +578,8 @@ public class AntBuildWriter
writer.addAttribute( "description", "Create the JAR" );
writer.startElement( "jar" );
- writer.addAttribute( "jarfile", "${maven.build.directory}/${maven.build.final.name}.jar" );
- AntBuildWriterUtil.addWrapAttribute( writer, "jar", "basedir", "${maven.build.output}", 3 );
+ writer.addAttribute( "jarfile", "${maven.build.dir}/${maven.build.finalName}.jar" );
+ AntBuildWriterUtil.addWrapAttribute( writer, "jar", "basedir", "${maven.build.outputDir}", 3 );
AntBuildWriterUtil.addWrapAttribute( writer, "jar", "excludes", "**/package.html", 3 );
writer.endElement(); // jar
@@ -295,42 +588,9 @@ public class AntBuildWriter
AntBuildWriterUtil.writeLineBreak( writer );
}
- private void writeCleanTarget( XMLWriter writer )
- {
- AntBuildWriterUtil.writeCommentText( writer, "Cleaning up target", 1 );
-
- writer.startElement( "target" );
- writer.addAttribute( "name", "clean" );
- writer.addAttribute( "description", "Clean the output directory" );
-
- writer.startElement( "delete" );
- writer.addAttribute( "dir", "${maven.build.directory}" );
- writer.endElement(); // delete
-
- writer.endElement(); // target
-
- AntBuildWriterUtil.writeLineBreak( writer );
- }
-
- private void writeCompileTarget( XMLWriter writer, List compileSourceRoots )
- {
- AntBuildWriterUtil.writeCommentText( writer, "Compilation target", 1 );
-
- writer.startElement( "target" );
- writer.addAttribute( "name", "compile" );
- writer.addAttribute( "depends", "get-deps" );
- writer.addAttribute( "description", "Compile the code" );
-
- writeCompileTasks( writer, project.getBasedir(), "${maven.build.output}", compileSourceRoots, project
- .getBuild().getResources(), null );
-
- writer.endElement(); // target
-
- AntBuildWriterUtil.writeLineBreak( writer );
- }
-
private static void writeCompileTasks( XMLWriter writer, File basedir, String outputDirectory,
- List compileSourceRoots, List resources, String additionalClassesDirectory )
+ List compileSourceRoots, List resources, String additionalClassesDirectory,
+ boolean isTest )
{
writer.startElement( "mkdir" );
writer.addAttribute( "dir", outputDirectory );
@@ -345,13 +605,19 @@ public class AntBuildWriter
AntBuildWriterUtil.addWrapAttribute( writer, "javac", "deprecation", "true", 3 ); // TODO: use compiler setting
AntBuildWriterUtil.addWrapAttribute( writer, "javac", "optimize", "false", 3 ); // TODO: use compiler setting
- for ( Iterator i = compileSourceRoots.iterator(); i.hasNext(); )
+ String[] compileSourceRootsArray = (String[]) compileSourceRoots.toArray( new String[0] );
+ for ( int i = 0; i < compileSourceRootsArray.length; i++ )
{
- String srcDir = (String) i.next();
-
writer.startElement( "src" );
writer.startElement( "pathelement" );
- writer.addAttribute( "location", PathUtils.toRelative( basedir, srcDir ) );
+ if ( isTest )
+ {
+ writer.addAttribute( "location", "${maven.build.testDir." + i + "}" );
+ }
+ else
+ {
+ writer.addAttribute( "location", "${maven.build.srcDir." + i + "}" );
+ }
writer.endElement(); // pathelement
writer.endElement(); // src
}
@@ -359,28 +625,42 @@ public class AntBuildWriter
if ( additionalClassesDirectory == null )
{
writer.startElement( "classpath" );
- writer.addAttribute( "refid", "build.classpath" );
+ if ( isTest )
+ {
+ writer.addAttribute( "refid", "build.test.classpath" );
+ }
+ else
+ {
+ writer.addAttribute( "refid", "build.classpath" );
+ }
writer.endElement(); // classpath
}
else
{
writer.startElement( "classpath" );
writer.startElement( "path" );
- writer.addAttribute( "refid", "build.classpath" );
+ if ( isTest )
+ {
+ writer.addAttribute( "refid", "build.test.classpath" );
+ }
+ else
+ {
+ writer.addAttribute( "refid", "build.classpath" );
+ }
writer.endElement(); // path
writer.startElement( "pathelement" );
writer.addAttribute( "location", additionalClassesDirectory );
writer.endElement(); // pathelement
writer.endElement(); // classpath
-
}
writer.endElement(); // javac
}
- for ( Iterator i = resources.iterator(); i.hasNext(); )
+ Resource[] array = (Resource[]) resources.toArray( new Resource[0] );
+ for ( int i = 0; i < array.length; i++ )
{
- Resource resource = (Resource) i.next();
+ Resource resource = array[i];
if ( new File( resource.getDirectory() ).exists() )
{
@@ -398,7 +678,14 @@ public class AntBuildWriter
writer.addAttribute( "todir", outputDir );
writer.startElement( "fileset" );
- writer.addAttribute( "dir", PathUtils.toRelative( basedir, resource.getDirectory() ) );
+ if ( isTest )
+ {
+ writer.addAttribute( "dir", "${maven.build.testResourceDir." + i + "}" );
+ }
+ else
+ {
+ writer.addAttribute( "dir", "${maven.build.resourceDir." + i + "}" );
+ }
writeIncludesExcludes( writer, resource.getIncludes(), resource.getExcludes() );
@@ -409,42 +696,9 @@ public class AntBuildWriter
}
}
- private static List removeEmptyCompileSourceRoots( List compileSourceRoots )
- {
- List newCompileSourceRootsList = new ArrayList();
- if ( compileSourceRoots != null )
- {
- // copy as I may be modifying it
- for ( Iterator i = compileSourceRoots.iterator(); i.hasNext(); )
- {
- String srcDir = (String) i.next();
- if ( new File( srcDir ).exists() )
- {
- newCompileSourceRootsList.add( srcDir );
- }
- }
- }
- return newCompileSourceRootsList;
- }
-
- private static void writeIncludesExcludes( XMLWriter writer, List includes, List excludes )
- {
- for ( Iterator i = includes.iterator(); i.hasNext(); )
- {
- String include = (String) i.next();
- writer.startElement( "include" );
- writer.addAttribute( "name", include );
- writer.endElement(); // include
- }
- for ( Iterator i = excludes.iterator(); i.hasNext(); )
- {
- String exclude = (String) i.next();
- writer.startElement( "exclude" );
- writer.addAttribute( "name", exclude );
- writer.endElement(); // exclude
- }
- }
-
+ /**
+ * @param writer
+ */
private void writeGetDepsTarget( XMLWriter writer )
{
AntBuildWriterUtil.writeCommentText( writer, "Download dependencies target", 1 );
@@ -455,8 +709,8 @@ public class AntBuildWriter
writer.startElement( "condition" );
writer.addAttribute( "property", "maven.mode.offline" );
writer.startElement( "equals" );
- writer.addAttribute( "arg1", "${build.sysclasspath}" );
- writer.addAttribute( "arg2", "only" );
+ writer.addAttribute( "arg1", "${maven.settings.offline}" );
+ writer.addAttribute( "arg2", "true" );
writer.endElement(); // equals
writer.endElement(); // condition
writer.endElement(); // target
@@ -474,8 +728,7 @@ public class AntBuildWriter
writer.endElement(); // mkdir
// TODO: proxy - probably better to use wagon!
-
- for ( Iterator i = project.getArtifacts().iterator(); i.hasNext(); )
+ for ( Iterator i = project.getTestArtifacts().iterator(); i.hasNext(); )
{
Artifact artifact = (Artifact) i.next();
@@ -508,78 +761,54 @@ public class AntBuildWriter
AntBuildWriterUtil.writeLineBreak( writer );
}
- private void writeBuildPathDefinition( XMLWriter writer )
- {
- AntBuildWriterUtil.writeCommentText( writer, "Defining classpaths", 1 );
+ // ----------------------------------------------------------------------
+ // Convenience methods
+ // ----------------------------------------------------------------------
- writer.startElement( "path" );
- writer.addAttribute( "id", "build.classpath" );
- writer.startElement( "fileset" );
- writer.addAttribute( "dir", "${maven.repo.local}" );
- for ( Iterator i = project.getArtifacts().iterator(); i.hasNext(); )
+ /**
+ * @param compileSourceRoots
+ * @return not null list
+ */
+ private static List removeEmptyCompileSourceRoots( List compileSourceRoots )
+ {
+ List newCompileSourceRootsList = new ArrayList();
+ if ( compileSourceRoots != null )
{
- Artifact artifact = (Artifact) i.next();
- writer.startElement( "include" );
- writer.addAttribute( "name", PathUtils.toRelative( localRepository, artifact.getFile().getPath() ) );
- writer.endElement(); // include
+ // copy as I may be modifying it
+ for ( Iterator i = compileSourceRoots.iterator(); i.hasNext(); )
+ {
+ String srcDir = (String) i.next();
+ if ( new File( srcDir ).exists() )
+ {
+ newCompileSourceRootsList.add( srcDir );
+ }
+ }
}
- writer.endElement(); // fileset
- writer.endElement(); // path
- AntBuildWriterUtil.writeLineBreak( writer );
+ return newCompileSourceRootsList;
}
- private void writeProperties( XMLWriter writer )
+ /**
+ * @param writer
+ * @param includes
+ * @param excludes
+ */
+ private static void writeIncludesExcludes( XMLWriter writer, List includes, List excludes )
{
- // TODO: optional in m1
- // TODO: USD properties
- AntBuildWriterUtil.writeCommentText( writer, "Build environnement properties", 1 );
-
- writer.startElement( "property" );
- writer.addAttribute( "file", "${user.home}/.m2/maven.properties" );
- writer.endElement(); // property
-
- writer.startElement( "property" );
- writer.addAttribute( "name", "maven.build.output" );
- writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), project.getBuild()
- .getOutputDirectory() ) );
- writer.endElement(); // property
-
- writer.startElement( "property" );
- writer.addAttribute( "name", "maven.build.directory" );
- writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), project.getBuild().getDirectory() ) );
- writer.endElement(); // property
-
- writer.startElement( "property" );
- writer.addAttribute( "name", "maven.build.final.name" );
- writer.addAttribute( "value", project.getBuild().getFinalName() );
- writer.endElement(); // property
-
- // TODO: property?
- writer.startElement( "property" );
- writer.addAttribute( "name", "maven.test.reports" );
- writer.addAttribute( "value", "${maven.build.directory}/test-reports" );
- writer.endElement(); // property
-
- writer.startElement( "property" );
- writer.addAttribute( "name", "maven.test.output" );
- writer.addAttribute( "value", PathUtils.toRelative( project.getBasedir(), project.getBuild()
- .getTestOutputDirectory() ) );
- writer.endElement(); // property
-
- writer.startElement( "property" );
- writer.addAttribute( "name", "maven.repo.local" );
- writer.addAttribute( "value", "${user.home}/.m2/repository" );
- writer.endElement(); // property
-
- /* TODO: offline setting
- writer.startElement( "property" );
- writer.addAttribute( "name", "maven.mode.offline" );
- writer.addAttribute( "value", project.getBuild().getOutput() );
- writer.endElement(); // property
- */
-
- AntBuildWriterUtil.writeLineBreak( writer );
+ for ( Iterator i = includes.iterator(); i.hasNext(); )
+ {
+ String include = (String) i.next();
+ writer.startElement( "include" );
+ writer.addAttribute( "name", include );
+ writer.endElement(); // include
+ }
+ for ( Iterator i = excludes.iterator(); i.hasNext(); )
+ {
+ String exclude = (String) i.next();
+ writer.startElement( "exclude" );
+ writer.addAttribute( "name", exclude );
+ writer.endElement(); // exclude
+ }
}
/**
@@ -613,4 +842,16 @@ public class AntBuildWriter
AntBuildWriterUtil.writeLineBreak( writer );
}
+
+ /**
+ * Put a property in properties defined by a name and a value
+ *
+ * @param properties
+ * @param name
+ * @param value
+ */
+ private static void addProperty( Properties properties, String name, String value )
+ {
+ properties.put( name, StringUtils.isNotEmpty( value ) ? value : "" );
+ }
}
diff --git a/src/main/java/org/apache/maven/plugin/ant/AntMojo.java b/src/main/java/org/apache/maven/plugin/ant/AntMojo.java
index bb5cf87..f8cb032 100644
--- a/src/main/java/org/apache/maven/plugin/ant/AntMojo.java
+++ b/src/main/java/org/apache/maven/plugin/ant/AntMojo.java
@@ -20,6 +20,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.settings.Settings;
import java.io.File;
import java.io.IOException;
@@ -30,7 +31,7 @@ import java.io.IOException;
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @version $Id$
* @goal ant
- * @requiresDependencyResolution
+ * @requiresDependencyResolution test
* @todo change this to use the artifact ant tasks instead of :get
*/
public class AntMojo
@@ -53,6 +54,15 @@ public class AntMojo
private ArtifactRepository localRepository;
/**
+ * The current user system settings for use in Maven.
+ *
+ * @parameter expression="${settings}"
+ * @required
+ * @readonly
+ */
+ private Settings settings;
+
+ /**
* @see org.apache.maven.plugin.Mojo#execute()
*/
public void execute()
@@ -60,11 +70,12 @@ public class AntMojo
{
// TODO: read back previous
- AntBuildWriter antBuildWriter = new AntBuildWriter( project, new File( localRepository.getBasedir() ) );
+ AntBuildWriter antBuildWriter = new AntBuildWriter( project, new File( localRepository.getBasedir() ), settings );
try
{
antBuildWriter.writeBuildXml();
+ antBuildWriter.writeBuildProperties();
}
catch ( IOException e )
{
diff --git a/src/test/java/org/apache/maven/plugin/ant/AntMojoTest.java b/src/test/java/org/apache/maven/plugin/ant/AntMojoTest.java
index bf1e6b8..0e7a05e 100644
--- a/src/test/java/org/apache/maven/plugin/ant/AntMojoTest.java
+++ b/src/test/java/org/apache/maven/plugin/ant/AntMojoTest.java
@@ -17,9 +17,10 @@ package org.apache.maven.plugin.ant;
*/
import java.io.File;
+import java.io.FileInputStream;
+import java.util.Properties;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
-import org.apache.tools.ant.Main;
/**
* Class to test Ant plugin
@@ -62,13 +63,20 @@ public class AntMojoTest
mojo.execute();
File antBasedir = new File( getBasedir(), "target/test/unit/ant-test/" );
- File antBuild = new File( antBasedir, Main.DEFAULT_BUILD_FILENAME );
+ File antBuild = new File( antBasedir, AntBuildWriter.DEFAULT_BUILD_FILENAME );
assertTrue( antBuild.exists() );
+ File antProperties = new File( antBasedir, AntBuildWriter.DEFAULT_PROPERTIES_FILENAME );
+ assertTrue( antProperties.exists() );
AntWrapper.invoke( antBuild );
assertTrue( new File( antBasedir, "target" ).exists() );
assertTrue( new File( antBasedir, "target/classes" ).exists() );
assertTrue( new File( antBasedir, "target/ant-plugin-test.jar" ).exists() );
+
+ Properties properties = new Properties();
+ properties.load( new FileInputStream( new File( getBasedir(), "target/test/unit/ant-test/build.properties" ) ) );
+ String repo = properties.getProperty( "maven.repo.local" );
+ assertTrue( repo.equals( new File( getBasedir(), "target/local-repo" ).getAbsolutePath() ) );
}
}
diff --git a/src/test/java/org/apache/maven/plugin/ant/stubs/AntTestMavenProjectStub.java b/src/test/java/org/apache/maven/plugin/ant/stubs/AntTestMavenProjectStub.java
index 72c4bf3..6a5f381 100644
--- a/src/test/java/org/apache/maven/plugin/ant/stubs/AntTestMavenProjectStub.java
+++ b/src/test/java/org/apache/maven/plugin/ant/stubs/AntTestMavenProjectStub.java
@@ -20,7 +20,6 @@ import java.io.File;
import java.io.FileReader;
import java.util.Collections;
import java.util.List;
-import java.util.Set;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
@@ -29,6 +28,7 @@ import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Build;
import org.apache.maven.model.Model;
import org.apache.maven.model.Repository;
+import org.apache.maven.model.Resource;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.codehaus.plexus.PlexusTestCase;
@@ -47,13 +47,14 @@ public class AntTestMavenProjectStub
*/
public AntTestMavenProjectStub()
{
+ File antTestDir = new File( PlexusTestCase.getBasedir() + "/src/test/resources/unit/ant-test/" );
+
MavenXpp3Reader pomReader = new MavenXpp3Reader();
Model model = null;
try
{
- model = pomReader.read( new FileReader( new File( PlexusTestCase.getBasedir()
- + "/src/test/resources/unit/ant-test/ant-test-plugin-config.xml" ) ) );
+ model = pomReader.read( new FileReader( new File( antTestDir, "ant-test-plugin-config.xml" ) ) );
setModel( model );
}
catch ( Exception e )
@@ -69,10 +70,22 @@ public class AntTestMavenProjectStub
setPackaging( model.getPackaging() );
build = new Build();
+ Resource resource = new Resource();
+
build.setFinalName( model.getArtifactId() );
build.setDirectory( getBasedir().getAbsolutePath() + "/target" );
+
+ build.setSourceDirectory( antTestDir + "/src/main/java" );
+ resource.setDirectory( antTestDir + "/src/main/resources" );
+ build.setResources( Collections.singletonList( resource ) );
build.setOutputDirectory( getBasedir().getAbsolutePath() + "/target/classes" );
+
+ build.setTestSourceDirectory( antTestDir + "/src/test/java" );
+ resource = new Resource();
+ resource.setDirectory( antTestDir + "/src/test/resources" );
+ build.setTestResources( Collections.singletonList( resource ) );
build.setTestOutputDirectory( getBasedir().getAbsolutePath() + "/target/test-classes" );
+
setBuild( build );
}
@@ -118,16 +131,29 @@ public class AntTestMavenProjectStub
}
/**
- * @see org.apache.maven.project.MavenProject#getArtifacts()
+ * @see org.apache.maven.project.MavenProject#getCompileArtifacts()
+ */
+ public List getCompileArtifacts()
+ {
+ Artifact junit = new DefaultArtifact( "junit", "junit", VersionRange.createFromVersion( "3.8.1" ),
+ Artifact.SCOPE_TEST, "jar", null, new DefaultArtifactHandler( "jar" ),
+ false );
+ junit.setFile( new File( "junit/junit/3.8.1/junit-3.8.1.jar" ) );
+
+ return Collections.singletonList( junit );
+ }
+
+ /**
+ * @see org.apache.maven.project.MavenProject#getTestArtifacts()
*/
- public Set getArtifacts()
+ public List getTestArtifacts()
{
Artifact junit = new DefaultArtifact( "junit", "junit", VersionRange.createFromVersion( "3.8.1" ),
Artifact.SCOPE_TEST, "jar", null, new DefaultArtifactHandler( "jar" ),
false );
junit.setFile( new File( "junit/junit/3.8.1/junit-3.8.1.jar" ) );
- return Collections.singleton( junit );
+ return Collections.singletonList( junit );
}
/**
diff --git a/src/test/java/org/apache/maven/plugin/ant/stubs/SettingsStub.java b/src/test/java/org/apache/maven/plugin/ant/stubs/SettingsStub.java
new file mode 100644
index 0000000..40d86dc
--- /dev/null
+++ b/src/test/java/org/apache/maven/plugin/ant/stubs/SettingsStub.java
@@ -0,0 +1,43 @@
+package org.apache.maven.plugin.ant.stubs;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.maven.settings.Settings;
+
+/**
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class SettingsStub
+ extends Settings
+{
+ /**
+ * @see org.apache.maven.settings.Settings#isOffline()
+ */
+ public boolean isOffline()
+ {
+ return false;
+ }
+
+ /**
+ * @see org.apache.maven.settings.Settings#isInteractiveMode()
+ */
+ public boolean isInteractiveMode()
+ {
+ return true;
+ }
+}
diff --git a/src/test/resources/unit/ant-test/ant-test-plugin-config.xml b/src/test/resources/unit/ant-test/ant-test-plugin-config.xml
index 1ff7218..1c51725 100644
--- a/src/test/resources/unit/ant-test/ant-test-plugin-config.xml
+++ b/src/test/resources/unit/ant-test/ant-test-plugin-config.xml
@@ -18,14 +18,14 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>ant-plugin.test</groupId>
- <artifactId>ant-plugin-test</artifactId>
- <packaging>jar</packaging>
- <version>1.0-SNAPSHOT</version>
- <inceptionYear>2006</inceptionYear>
- <name>Maven Ant Plugin Test</name>
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>ant-plugin.test</groupId>
+ <artifactId>ant-plugin-test</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <inceptionYear>2006</inceptionYear>
+ <name>Maven Ant Plugin Test</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
@@ -42,9 +42,10 @@
<artifactId>maven-ant-plugin</artifactId>
<configuration>
<project implementation="org.apache.maven.plugin.ant.stubs.AntTestMavenProjectStub"/>
+ <settings implementation="org.apache.maven.plugin.ant.stubs.SettingsStub"/>
<localRepository>${localRepository}</localRepository>
</configuration>
</plugin>
</plugins>
- </build>
-</project>
+ </build>
+</project>
diff --git a/src/test/resources/unit/ant-test/src/main/resources/main.txt b/src/test/resources/unit/ant-test/src/main/resources/main.txt
new file mode 100644
index 0000000..0aef8b1
--- /dev/null
+++ b/src/test/resources/unit/ant-test/src/main/resources/main.txt
@@ -0,0 +1 @@
+Test resource for main
\ No newline at end of file
diff --git a/src/test/resources/unit/ant-test/src/test/resources/test.txt b/src/test/resources/unit/ant-test/src/test/resources/test.txt
new file mode 100644
index 0000000..ca26e8d
--- /dev/null
+++ b/src/test/resources/unit/ant-test/src/test/resources/test.txt
@@ -0,0 +1 @@
+Test resource for test
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
"commits@maven.apache.org" <co...@maven.apache.org>.