You are viewing a plain text version of this content. The canonical link for it is here.
Posted to m2-dev@maven.apache.org by br...@apache.org on 2004/09/02 14:34:19 UTC
cvs commit: maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test SurefirePlugin.java
brett 2004/09/02 05:34:19
Modified: . ci.sh m2-bootstrap-all.sh pom.xml
maven-artifact/src/test/java/org/apache/maven/artifact
ArtifactComponentTestCase.java
maven-artifact/src/test/java/org/apache/maven/artifact/resolver
ArtifactResolverTest.java
maven-core plugin-notes.txt
maven-core/src/main/java/org/apache/maven DefaultMaven.java
JarOverrideRequestTransformation.java Maven.java
MavenCli.java MavenConstants.java
maven-core/src/main/java/org/apache/maven/plugin
DefaultPluginManager.java
OgnlProjectValueExtractor.java
maven-core/src/main/java/org/apache/maven/project
DefaultMavenProjectBuilder.java MavenProject.java
MavenProjectBuilder.java
maven-core/src/main/java/org/apache/maven/repository
RepositoryUtils.java
maven-core/src/main/resources/org/apache/maven/project
pom.xml
maven-core/src/test/java/org/apache/maven MavenTestCase.java
maven-core/src/test/java/org/apache/maven/lifecycle/goal/phase
GoalResolutionPhaseTest.java
maven-core/src/test/java/org/apache/maven/plugin
OgnlProjectValueExtractorTest.java
maven-core/src/test/java/org/apache/maven/project
AbstractProjectTestCase.java
ProjectBaseDirectoryAlignmentTest.java
maven-core/src/test/java/org/apache/maven/project/inheritance
ProjectInheritanceTestCase.java
maven-core/src/test/java/org/apache/maven/project/inheritance/t00
ProjectInheritanceTest.java
maven-core/src/test/java/org/apache/maven/project/inheritance/t01
ProjectInheritanceTest.java
maven-core-it maven-core-it.sh
maven-core-it/it0002 expected-results.txt prebuild.hook
maven-core-it/it0003 expected-results.txt prebuild.hook
maven-core-it/it0004 expected-results.txt prebuild.hook
maven-core-it/it0005 expected-results.txt prebuild.hook
maven-core-it/it0007 expected-results.txt prebuild.hook
maven-core-it-verifier/src/main/java/org/apache/maven/it
Verifier.java
maven-mboot2/src/main/java ArtifactDownloader.java
MBoot.java
maven-model maven.mdo
maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test
SurefirePlugin.java
Removed: maven-core/src/main/java/org/apache/maven/project
MavenProjectConstants.java
Log:
PR: MNG-74
remove maven.properties use everywhere except classworlds conf
Revision Changes Path
1.32 +3 -12 maven-components/ci.sh
Index: ci.sh
===================================================================
RCS file: /home/cvs/maven-components/ci.sh,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- ci.sh 11 Aug 2004 20:38:32 -0000 1.31
+++ ci.sh 2 Sep 2004 12:34:16 -0000 1.32
@@ -5,20 +5,10 @@
#
# 1. export JAVA_HOME=/path/to/java
#
-# 2. export MBOOT_HOME=~/mboot
-#
-# 3. export M2_HOME=~/maven
-#
-# 4. export PATH=$PATH:$MBOOT:$M2_HOME/bin
-#
-# 5. Your ~/maven.properties must have: maven.repo.local = ~/path/to/repo
-#
# ----------------------------------------------------------------------------------
export JAVA_HOME=/usr/local/java
-export MBOOT_HOME=$HOME/mboot
-export M2_HOME=$HOME/m2
-export PATH=$PATH:$MBOOT_HOME:$M2_HOME/bin:$JAVA_HOME/bin
+export PATH=$PATH:$JAVA_HOME/bin
# ----------------------------------------------------------------------------------
@@ -117,7 +107,7 @@
(
cd $DIR/maven-components
- sh m2-bootstrap-all.sh
+ sh m2-bootstrap-all.sh -Dmaven.repo.local="$HOME_DIR/$REPO" -Dmaven.home="$HOME_DIR/m2"
)
DIST=m2-${TIMESTAMP}.tar.gz
@@ -128,6 +118,7 @@
mkdir -p $DEPLOY_DIR > /dev/null 2>&1
+ # Assumes pwd is still $HOME_DIR
tar czf $DEPLOY_DIR/$DIST m2
else
1.3 +1 -1 maven-components/m2-bootstrap-all.sh
Index: m2-bootstrap-all.sh
===================================================================
RCS file: /home/cvs/maven-components/m2-bootstrap-all.sh,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- m2-bootstrap-all.sh 14 Aug 2004 20:46:24 -0000 1.2
+++ m2-bootstrap-all.sh 2 Sep 2004 12:34:16 -0000 1.3
@@ -12,7 +12,7 @@
echo "-----------------------------------------------------------------------"
cd ./maven-mboot2
- ./build
+ ./build $ARGS
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
)
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
1.8 +2 -0 maven-components/pom.xml
Index: pom.xml
===================================================================
RCS file: /home/cvs/maven-components/pom.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- pom.xml 26 Aug 2004 01:18:07 -0000 1.7
+++ pom.xml 2 Sep 2004 12:34:16 -0000 1.8
@@ -20,6 +20,8 @@
<repository>
<id>central</id>
<name>Maven Central Repository at Ibiblio</name>
+ <!-- TODO: should this be scp:://login.ibiblio.org:/public/html/maven? Or should we even use url?
+ How about protocol, host, directory, etc? -->
<url>scp://login.ibiblio.org//public/html/maven</url>
</repository>
</distributionManagement>
1.3 +16 -1 maven-components/maven-artifact/src/test/java/org/apache/maven/artifact/ArtifactComponentTestCase.java
Index: ArtifactComponentTestCase.java
===================================================================
RCS file: /home/cvs/maven-components/maven-artifact/src/test/java/org/apache/maven/artifact/ArtifactComponentTestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ArtifactComponentTestCase.java 17 Aug 2004 20:58:29 -0000 1.2
+++ ArtifactComponentTestCase.java 2 Sep 2004 12:34:17 -0000 1.3
@@ -46,6 +46,21 @@
protected abstract String component();
+ /** Return an existing file, not a directory - causes creation to fail. */
+ protected ArtifactRepository badLocalRepository() throws IOException
+ {
+ ArtifactRepository localRepository = new ArtifactRepository();
+
+ String path = "target/test-classes/repositories/" + component() + "/bad-local-repository";
+
+ File f = new File( path );
+ f.createNewFile();
+
+ localRepository.setUrl( "file://" + path );
+
+ return localRepository;
+ }
+
protected ArtifactRepository localRepository()
{
ArtifactRepository localRepository = new ArtifactRepository();
1.4 +14 -1 maven-components/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
Index: ArtifactResolverTest.java
===================================================================
RCS file: /home/cvs/maven-components/maven-artifact/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ArtifactResolverTest.java 17 Aug 2004 20:58:29 -0000 1.3
+++ ArtifactResolverTest.java 2 Sep 2004 12:34:17 -0000 1.4
@@ -256,5 +256,18 @@
assertLocalArtifactPresent( l );
}
+
+/*
+ public void testResolutionOfASingleArtifactWhereTheArtifactIsNotPresentLocallyAndMustBeRetrievedFromTheRemoteRepositoryAndLocalCannotBeCreated()
+ throws Exception
+ {
+ Artifact m = createRemoteArtifact( "m", "1.0" );
+
+ artifactResolver.resolve( m, remoteRepositories(), badLocalRepository() );
+
+ // TODO [failing test case]: throw and handle a more informative exception
+ }
+*/
+
}
1.2 +2 -2 maven-components/maven-core/plugin-notes.txt
Index: plugin-notes.txt
===================================================================
RCS file: /home/cvs/maven-components/maven-core/plugin-notes.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- plugin-notes.txt 9 Aug 2004 19:02:33 -0000 1.1
+++ plugin-notes.txt 2 Sep 2004 12:34:17 -0000 1.2
@@ -42,7 +42,7 @@
<plugin>
<id>surefire</id>
<configuration>
- <mavenRepoLocal>#maven.repo.local</mavenRepoLocal>
+ <mavenRepoLocal>#localRepository</mavenRepoLocal>
<basedir>#basedir</basedir>
<includes>#project.build.unitTest.includes</includes>
<excludes>#project.build.unitTest.excludes</excludes>
@@ -53,4 +53,4 @@
If say for example you used DbUnit or XMLUnit then the configurations for
each of the plugin executions would be different.
--->
\ No newline at end of file
+-->
1.9 +18 -30 maven-components/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
Index: DefaultMaven.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/DefaultMaven.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DefaultMaven.java 26 Aug 2004 16:37:08 -0000 1.8
+++ DefaultMaven.java 2 Sep 2004 12:34:17 -0000 1.9
@@ -51,7 +51,7 @@
private String mavenHome;
- private String localRepository;
+ private String mavenHomeLocal;
private boolean logResults = true;
@@ -70,7 +70,9 @@
// ----------------------------------------------------------------------
// Project execution
// ----------------------------------------------------------------------
-
+
+ /** @todo probable need to do getProject( null ) here instead - but no project doesn't seem supported just yet,
+ at least from the CLI. */
public ExecutionResponse execute( List goals ) throws GoalNotFoundException
{
return execute( (MavenProject) null, goals );
@@ -90,7 +92,13 @@
ExecutionResponse response = new ExecutionResponse();
- MavenSession session = new MavenSession( container, pluginManager, project, getLocalRepository(), goals );
+ pluginManager.setLocalRepository( project.getLocalRepository() );
+
+ MavenSession session = new MavenSession( container,
+ pluginManager,
+ project,
+ project.getLocalRepository(),
+ goals );
try
{
@@ -205,7 +213,7 @@
{
File f = (File) iterator.next();
- MavenProject project = projectBuilder.build( f, getLocalRepository() );
+ MavenProject project = projectBuilder.build( f );
projects.add( project );
}
@@ -281,7 +289,7 @@
}
}
- return projectBuilder.build( project, getLocalRepository() );
+ return projectBuilder.build( project );
}
// ----------------------------------------------------------------------
@@ -307,25 +315,14 @@
return mavenHome;
}
- // ----------------------------------------------------------------------
- // Maven local repository
- // ----------------------------------------------------------------------
-
- public void setLocalRepository( String localRepository )
+ public void setMavenHomeLocal( String mavenHomeLocal )
{
- this.localRepository = localRepository;
+ this.mavenHomeLocal = mavenHomeLocal;
}
- private ArtifactRepository wagonLocalRepository;
-
- public ArtifactRepository getLocalRepository()
+ public String getMavenHomeLocal()
{
- if ( wagonLocalRepository == null )
- {
- wagonLocalRepository = new ArtifactRepository( "local", "file://" + localRepository );
- }
-
- return wagonLocalRepository;
+ return mavenHomeLocal;
}
// ----------------------------------------------------------------------
@@ -358,13 +355,4 @@
return secs + " seconds";
}
}
-
- // ----------------------------------------------------------------------
- //
- // ----------------------------------------------------------------------
-
- public void booty() throws Exception
- {
- pluginManager.setLocalRepository( getLocalRepository() );
- }
-}
\ No newline at end of file
+}
1.2 +2 -1 maven-components/maven-core/src/main/java/org/apache/maven/JarOverrideRequestTransformation.java
Index: JarOverrideRequestTransformation.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/JarOverrideRequestTransformation.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JarOverrideRequestTransformation.java 9 Aug 2004 19:02:34 -0000 1.1
+++ JarOverrideRequestTransformation.java 2 Sep 2004 12:34:17 -0000 1.2
@@ -35,6 +35,7 @@
Map parameters )
throws Exception
{
+/* TODO: need an override in the POM
MavenProject project = (MavenProject) parameters.get( "project" );
boolean mavenJarOverride = project.getBooleanProperty( "maven.jar.override" );
@@ -49,7 +50,7 @@
artifact.getType() );
return transformedArtifact;
}
-
+*/
return artifact;
}
}
1.3 +3 -14 maven-components/maven-core/src/main/java/org/apache/maven/Maven.java
Index: Maven.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/Maven.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Maven.java 15 Aug 2004 15:01:50 -0000 1.2
+++ Maven.java 2 Sep 2004 12:34:17 -0000 1.3
@@ -71,13 +71,9 @@
String getMavenHome();
- // ----------------------------------------------------------------------
- // Maven local repository
- // ----------------------------------------------------------------------
+ void setMavenHomeLocal( String mavenHomeLocal );
- void setLocalRepository( String localRepository );
-
- ArtifactRepository getLocalRepository();
+ String getMavenHomeLocal();
// ----------------------------------------------------------------------
// Maven project handling
@@ -85,11 +81,4 @@
MavenProject getProject( File project )
throws ProjectBuildingException;
-
- // ----------------------------------------------------------------------
- //
- // ----------------------------------------------------------------------
-
- void booty()
- throws Exception;
}
1.4 +7 -54 maven-components/maven-core/src/main/java/org/apache/maven/MavenCli.java
Index: MavenCli.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/MavenCli.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MavenCli.java 26 Aug 2004 01:18:08 -0000 1.3
+++ MavenCli.java 2 Sep 2004 12:34:17 -0000 1.4
@@ -62,11 +62,9 @@
Maven maven = (Maven) embedder.lookup( Maven.ROLE );
- maven.setMavenHome( findMavenHome() );
+ maven.setMavenHome( System.getProperty( "maven.home" ) );
- maven.setLocalRepository( findLocalRepository() );
-
- maven.booty();
+ maven.setMavenHomeLocal( System.getProperty( "maven.home.local", System.getProperty( "user.home" ) + "/.m2" ) );
//---
@@ -96,6 +94,10 @@
// Take this info from generated piece of meta data which uses
// the POM itself as the source. We don't want to get into the same
// bullshit of manually updating some constant in the source.
+ // [Brett] My thoughts on this (something I long ago slated for m1), is to store the pom in
+ // META-INF or something similar for a jar, and then read that back. maven-model being so
+ // trim makes that more of a reality. The other alternative is simply to store that info in
+ // the manifest in plain text and read that back.
System.out.println( "Maven version: " );
return;
@@ -153,46 +155,6 @@
}
// ----------------------------------------------------------------------
- // Local repository
- // ----------------------------------------------------------------------
-
- /** @todo shouldn't need to duplicate the code to load maven.properties. */
- private static String findLocalRepository()
- throws Exception
- {
- Properties properties = new Properties();
-
- properties.load( new FileInputStream( new File( System.getProperty( "user.home" ), "maven.properties" ) ) );
-
- for ( Iterator i = properties.keySet().iterator(); i.hasNext(); )
- {
- String key = (String) i.next();
-
- properties.setProperty( key, StringUtils.interpolate( properties.getProperty( key ), System.getProperties() ) );
- }
-
- String localRepository = properties.getProperty( MavenConstants.MAVEN_REPO_LOCAL );
-
- if ( localRepository == null )
- {
- throw new Exception( "Missing 'maven.repo.local' from ~/maven.properties." );
- }
-
- return localRepository;
- }
-
- // ----------------------------------------------------------------------
- // Maven home
- // ----------------------------------------------------------------------
-
- private static String findMavenHome()
- {
- String mavenHome = System.getProperty( "maven.home" );
-
- return mavenHome;
- }
-
- // ----------------------------------------------------------------------
// System properties handling
// ----------------------------------------------------------------------
@@ -209,15 +171,6 @@
else
{
System.setProperty( MavenConstants.DEBUG_ON, "false" );
- }
-
- if ( commandLine.hasOption( CLIManager.WORK_OFFLINE ) )
- {
- System.setProperty( MavenConstants.WORK_OFFLINE, "true" );
- }
- else
- {
- System.setProperty( MavenConstants.WORK_OFFLINE, "false" );
}
if ( commandLine.hasOption( CLIManager.SET_SYSTEM_PROPERTY ) )
1.2 +1 -12 maven-components/maven-core/src/main/java/org/apache/maven/MavenConstants.java
Index: MavenConstants.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/MavenConstants.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MavenConstants.java 9 Aug 2004 19:02:34 -0000 1.1
+++ MavenConstants.java 2 Sep 2004 12:34:17 -0000 1.2
@@ -18,17 +18,6 @@
public class MavenConstants
{
- public static final int MAVEN_VERSION = 3;
-
- public static final int POM_VERSION = 3;
-
- public static final String MAVEN_PROPERTIES = "maven.properties";
-
+ // TODO: remove? only used in CLI for now - once set, never used
public static final String DEBUG_ON = "maven.debugOn";
-
- public static final String WORK_OFFLINE = "maven.workOffline";
-
- public static final String MAVEN_HOME = "m2.home";
-
- public static final String MAVEN_REPO_LOCAL = "maven.repo.local";
}
1.6 +6 -2 maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
Index: DefaultPluginManager.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DefaultPluginManager.java 26 Aug 2004 04:39:53 -0000 1.5
+++ DefaultPluginManager.java 2 Sep 2004 12:34:17 -0000 1.6
@@ -207,7 +207,7 @@
public boolean isPluginInstalled( String pluginId )
{
- return (pluginDescriptors.get( pluginId ) != null);
+ return pluginDescriptors.containsKey( pluginId );
}
private String getPluginId( String goalName )
@@ -261,6 +261,7 @@
MavenMetadataSource sr = new MavenMetadataSource( remotePluginRepositories, localRepository, artifactResolver );
+ // TODO: needs to be configurable
String[] excludes = new String[] { "maven-core", "maven-artifact", "maven-model", "maven-plugin", "plexus",
"xstream", "xpp3", "classworlds", "ognl" };
@@ -275,17 +276,20 @@
public void initialize() throws Exception
{
- //!! move this to be configurable from the Maven component
+ // TODO: move this to be configurable from the Maven component
remotePluginRepositories = new HashSet();
+ // TODO: needs to be configured from the POM element
remotePluginRepositories.add( new ArtifactRepository( "plugin-repository", "http://www.ibiblio.org/maven" ) );
}
+ // TODO: is this needed or can it be found from the session?
public ArtifactRepository getLocalRepository()
{
return localRepository;
}
+ // TODO: is this needed or can it be found from the session? It is currently set from the session
public void setLocalRepository( ArtifactRepository localRepository )
{
this.localRepository = localRepository;
1.4 +18 -5 maven-components/maven-core/src/main/java/org/apache/maven/plugin/OgnlProjectValueExtractor.java
Index: OgnlProjectValueExtractor.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/OgnlProjectValueExtractor.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- OgnlProjectValueExtractor.java 15 Aug 2004 15:01:51 -0000 1.3
+++ OgnlProjectValueExtractor.java 2 Sep 2004 12:34:17 -0000 1.4
@@ -44,9 +44,19 @@
// do nothing
}
}
- else if ( expression.equals( "#localRepository") )
+ else if ( expression.equals( "#localRepository" ) )
{
- value = context.getLocalRepository();
+ value = context.getSession().getLocalRepository();
+ }
+ else if ( expression.equals( "#maven.repo.local" ) )
+ {
+ // TODO: remove this alias: but note that it is a string instead of an ArtifactRepository
+ value = context.getSession().getLocalRepository().getUrl().substring( "file://".length() );
+ }
+ else if ( expression.equals( "#maven.final.name" ) )
+ {
+ // TODO: remove this alias
+ value = context.getProject().getModel().getBuild().getFinalName();
}
else if ( expression.equals( "#project" ) )
{
@@ -71,6 +81,7 @@
catch ( OgnlException e )
{
// do nothing
+ e.printStackTrace(); // TODO: should log? should ignore as previously?
}
}
else if ( expression.equals( "#basedir" ) )
@@ -79,6 +90,8 @@
}
else if ( expression.startsWith( "#" ) )
{
+ new Exception( "Got expression '" + expression + "' that was not recognised" ).printStackTrace();
+/* TODO: this probably isn't needed - log something properly though that is invalid? Probably should throw exception.
expression = expression.substring( 1 );
int pathSeparator = expression.indexOf( "/" );
@@ -92,10 +105,9 @@
{
value = context.getProject().getProperty( expression );
}
-
+*/
}
-
// If we strike out we'll just use the expression which allows
// people to use hardcoded values if they wish.
@@ -107,3 +119,4 @@
return value;
}
}
+
1.7 +57 -86 maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
Index: DefaultMavenProjectBuilder.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- DefaultMavenProjectBuilder.java 18 Aug 2004 07:28:10 -0000 1.6
+++ DefaultMavenProjectBuilder.java 2 Sep 2004 12:34:17 -0000 1.7
@@ -55,7 +55,6 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.Properties;
import java.util.Set;
import java.util.Collection;
import java.util.Collections;
@@ -64,8 +63,6 @@
extends AbstractLogEnabled
implements MavenProjectBuilder, Initializable
{
- public static final String MAVEN_PROPERTIES = "maven.properties";
-
private ArtifactResolver artifactResolver;
private ArtifactFactory artifactFactory;
@@ -90,25 +87,29 @@
modelReader = new MavenXpp3Reader();
}
- public MavenProject build( File projectDescriptor, ArtifactRepository localRepository )
+ public MavenProject build( File projectDescriptor )
throws ProjectBuildingException
{
- return build( projectDescriptor, localRepository, false );
+ return build( projectDescriptor, false );
}
/** @todo can we move the super model reading to the initialize method? what about the user/site? Is it reused?
- * @todo we should be passing in some more configuration here so that maven.home.local can be used for user properties. Then, the new stuff should be unit tested.
+ * @todo this is still not completely faithful to the "always override" method of the user POM: there is potential for settings not to be used in some rare circumstances. Some restructuring is necessary.
+ * @todo we should be passing in some more configuration here so that maven home local can be used for user properties. Then, the new stuff should be unit tested.
* @todo the user model bit overwriting the super model seems a bit gross, but is needed so that any repositories given take affect
*/
- public MavenProject build( File projectDescriptor, ArtifactRepository localRepository, boolean resolveDependencies )
+ public MavenProject build( File projectDescriptor, boolean resolveDependencies )
throws ProjectBuildingException
{
+ String localRepositoryValue = null;
+
try
{
+ // TODO: rename to super-pom.xml so it is not used by the reactor
superModel = modelReader.read( new InputStreamReader( DefaultMavenProjectBuilder.class.getResourceAsStream( "pom.xml" ) ) );
Model userModel = null;
- // TODO: use maven.home.local instead of user.home/.m2
+ // TODO: use maven home local instead of user.home/.m2
File userModelFile = new File( System.getProperty( "user.home" ) + "/.m2", "pom.xml" );
if ( userModelFile.exists() )
{
@@ -118,9 +119,31 @@
throw new ProjectBuildingException( "Inheritence not supported in the user override POM" );
}
+ if ( localRepositoryValue == null && userModel.getLocal() != null && userModel.getLocal().getRepository() != null )
+ {
+ localRepositoryValue = userModel.getLocal().getRepository();
+ }
superModel.getRepositories().addAll( userModel.getRepositories() );
}
+ if ( localRepositoryValue == null && superModel.getLocal() != null && superModel.getLocal().getRepository() != null )
+ {
+ localRepositoryValue = superModel.getLocal().getRepository();
+ }
+
+ // TODO: systemProperty in modello will make this redundant
+ localRepositoryValue = System.getProperty( "maven.repo.local", localRepositoryValue );
+
+ ArtifactRepository localRepository = null;
+ if ( localRepositoryValue != null )
+ {
+ localRepository = RepositoryUtils.localRepositoryToWagonRepository( localRepositoryValue );
+ }
+ else
+ {
+ throw new ProjectBuildingException( "A local repository must be specified" );
+ }
+
LinkedList lineage = new LinkedList();
MavenProject project = assembleLineage( projectDescriptor,
@@ -145,15 +168,12 @@
project = new MavenProject( userModel );
project.setFile( parent.getFile() );
project.setParent( parent );
-
- // Note that we don't currently support maven.properties here: this might be a better place to do
- // the overrides though, if it is kept. If so, would need to process this regardless of the existence
- // of pom.xml
- project.setProperties( parent.getProperties() );
}
+ project.setLocalRepository( localRepository );
project.setArtifacts( artifactFactory.createArtifacts( project.getDependencies(), localRepository ) );
+ // @todo this should be in the super POM when interpolation works
setupMavenFinalName( project );
// ----------------------------------------------------------------------
@@ -201,16 +221,12 @@
}
}
- /** @todo loading of project properties could be handled much more effeciently as they are never loaded from
- the repository. However, I believe they should be removedC anyway and use the POM -- Brett. */
private MavenProject assembleLineage( File projectDescriptor,
ArtifactRepository localRepository,
LinkedList lineage,
List remoteRepositories )
throws Exception
{
- Map properties = createProjectProperties( projectDescriptor.getParentFile() );
-
Model model = readModel( projectDescriptor );
MavenProject project = new MavenProject( model );
@@ -256,11 +272,17 @@
project.setParent( parent );
}
- project.setProperties( properties );
-
return project;
}
+ private void setupMavenFinalName( MavenProject project )
+ {
+ if ( project.getModel().getBuild().getFinalName() == null )
+ {
+ project.getModel().getBuild().setFinalName( project.getArtifactId() + "-" + project.getVersion() );
+ }
+ }
+
private Model readModel( File projectDescriptor )
throws Exception
{
@@ -306,65 +328,16 @@
}
catch ( ArtifactResolutionException e )
{
- throw new ProjectBuildingException( "Missing parent POM: ", e );
-
+ // @todo use parent.toString() if modello could generate it, or specify in a code segment
+ throw new ProjectBuildingException( "Missing parent POM: " +
+ parent.getGroupId() + ":" +
+ parent.getArtifactId() + "-" +
+ parent.getVersion(), e );
}
return artifact.getFile();
}
- private void setupMavenFinalName( MavenProject project )
- {
- String mavenFinalName = project.getProperty( "maven.final.name" );
-
- if ( mavenFinalName == null || mavenFinalName.indexOf( "${" ) >= 0 )
- {
- project.setProperty( "maven.final.name", project.getArtifactId() + "-" + project.getVersion() );
- }
- }
-
- private Map createProjectProperties( File descriptorDirectory )
- {
- File f;
-
- Properties systemProperties = System.getProperties();
-
- f = new File( System.getProperty( "user.home" ), MAVEN_PROPERTIES );
-
- Properties mavenProperties = PropertyUtils.loadProperties( f );
-
- // project build properties
- Properties userOverridesMavenProperties = null;
-
- if ( descriptorDirectory != null )
- {
- f = new File( descriptorDirectory, MAVEN_PROPERTIES );
-
- userOverridesMavenProperties = PropertyUtils.loadProperties( f );
- }
-
- Map result = CollectionUtils.mergeMaps( new Map[]
- {
- systemProperties,
- mavenProperties,
- userOverridesMavenProperties,
- } );
-
- // Set the basedir value in the context.
- result.put( "basedir", descriptorDirectory.getAbsolutePath() );
-
- for ( Iterator i = result.keySet().iterator(); i.hasNext(); )
- {
- String key = (String) i.next();
-
- String value = (String) result.get( key );
-
- result.put( key, StringUtils.interpolate( value, result ) );
- }
-
- return result;
- }
-
private Model interpolateModel( Model model, Map map )
throws Exception
{
@@ -381,19 +354,17 @@
return writer.toString();
}
- // ----------------------------------------------------------------------
- //
- // 1. collect all the vertices for the projects that we want to build.
- //
- // 2. iterate through the deps of each project and if that dep is within
- // the set of projects we want to build then add an edge, otherwise throw
- // the edge away because that dependency is not within the set of projects
- // we are trying to build. we assume a closed set.
- //
- // 3. do a topo sort on the graph that remains.
- //
- // ----------------------------------------------------------------------
-
+ /**
+ * Sort a list of projects.
+ * <ul>
+ * <li>collect all the vertices for the projects that we want to build.</li>
+ * <li>iterate through the deps of each project and if that dep is within
+ * the set of projects we want to build then add an edge, otherwise throw
+ * the edge away because that dependency is not within the set of projects
+ * we are trying to build. we assume a closed set.</li>
+ * <li>do a topo sort on the graph that remains.</li>
+ * </ul>
+ */
public List getSortedProjects( List projects )
throws Exception
{
1.4 +12 -45 maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
Index: MavenProject.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MavenProject.java 29 Aug 2004 18:57:30 -0000 1.3
+++ MavenProject.java 2 Sep 2004 12:34:17 -0000 1.4
@@ -24,6 +24,7 @@
import java.util.Set;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.model.Build;
import org.apache.maven.model.CiManagement;
import org.apache.maven.model.Contributor;
@@ -32,10 +33,11 @@
import org.apache.maven.model.IssueManagement;
import org.apache.maven.model.License;
import org.apache.maven.model.MailingList;
+import org.apache.maven.model.Local;
import org.apache.maven.model.Model;
import org.apache.maven.model.Organization;
import org.apache.maven.model.Scm;
-
+import org.apache.maven.repository.RepositoryUtils;
import org.codehaus.plexus.util.StringUtils;
/**
@@ -63,7 +65,7 @@
private Set artifacts;
- private Map properties;
+ private ArtifactRepository wagonLocalRepository;
public MavenProject( Model model )
{
@@ -509,59 +511,24 @@
return artifacts;
}
- public void setProperty( String key, String value )
- {
- getProperties().put( key, value );
- }
-
- public void setProperties( Map properties )
- {
- this.properties = properties;
- }
-
- public Map getProperties()
+ public List getRepositories()
{
- return properties;
+ return model.getRepositories();
}
- public String getProperty( String key )
+ public ArtifactRepository getLocalRepository()
{
- String property = (String) properties.get( key );
-
- if ( property == null && hasParent() )
+ if ( wagonLocalRepository == null && model.getLocal() != null && model.getLocal().getRepository() != null )
{
- property = getParent().getProperty( key );
+ wagonLocalRepository = RepositoryUtils.localRepositoryToWagonRepository( model.getLocal().getRepository() );
}
- return property;
+ return wagonLocalRepository;
}
- /**
- * Convert a <code>String</code> property to a
- * <code>Boolean</code> based on its contents. It would be nice
- * if Jelly would deal with this automatically.
- *
- * @param key The property key to lookup and convert.
- * @return The boolean value of the property if convertiable,
- * otherwise <code>Boolean.FALSE</code>.
- */
- public boolean getBooleanProperty( String key )
- {
- String value = getProperty( key );
-
- if ( "true".equalsIgnoreCase( value )
- || "on".equalsIgnoreCase( value )
- || "1".equals( value ) )
- {
- return true;
- }
-
- return false;
- }
-
- public List getRepositories()
+ public void setLocalRepository( ArtifactRepository repository )
{
- return model.getRepositories();
+ this.wagonLocalRepository = repository;
}
}
1.2 +2 -4 maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java
Index: MavenProjectBuilder.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProjectBuilder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MavenProjectBuilder.java 9 Aug 2004 19:02:37 -0000 1.1
+++ MavenProjectBuilder.java 2 Sep 2004 12:34:17 -0000 1.2
@@ -16,8 +16,6 @@
* limitations under the License.
*/
-import org.apache.maven.artifact.repository.ArtifactRepository;
-
import java.io.File;
import java.util.List;
@@ -27,10 +25,10 @@
// ----------------------------------------------------------------------
- MavenProject build( File project, ArtifactRepository localRepository )
+ MavenProject build( File project )
throws ProjectBuildingException;
- MavenProject build( File project, ArtifactRepository localRepository, boolean followTransitiveDeps )
+ MavenProject build( File project, boolean followTransitiveDeps )
throws ProjectBuildingException;
// ----------------------------------------------------------------------
1.2 +7 -2 maven-components/maven-core/src/main/java/org/apache/maven/repository/RepositoryUtils.java
Index: RepositoryUtils.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/repository/RepositoryUtils.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RepositoryUtils.java 9 Aug 2004 19:02:37 -0000 1.1
+++ RepositoryUtils.java 2 Sep 2004 12:34:17 -0000 1.2
@@ -9,6 +9,7 @@
import java.util.Set;
/**
+ * @todo not sure "wagon" notation is appropriate here - it is really maven-artifact which is not the same as wagon
* @author <a href="mailto:michal@codehaus.org">Michal Maczka</a>
* @version $Id$
*/
@@ -25,7 +26,6 @@
return repos;
}
-
public static ArtifactRepository
mavenRepositoryToWagonRepository( Repository mavenRepository )
{
@@ -34,5 +34,10 @@
retValue.setUrl( mavenRepository.getUrl() );
return retValue;
+ }
+
+ public static ArtifactRepository localRepositoryToWagonRepository( String repository )
+ {
+ return new ArtifactRepository( "local", "file://" + repository );
}
}
1.4 +18 -0 maven-components/maven-core/src/main/resources/org/apache/maven/project/pom.xml
Index: pom.xml
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/main/resources/org/apache/maven/project/pom.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- pom.xml 10 Aug 2004 19:48:56 -0000 1.3
+++ pom.xml 2 Sep 2004 12:34:17 -0000 1.4
@@ -10,6 +10,24 @@
</repository>
</repositories>
+<!--
+ <pluginRepositories>
+ <repository>
+ <id>pluginCentral</id>
+ <name>Maven Central Repository at ibiblio</name>
+ <url>http://www.ibiblio.org/maven</url>
+ </repository>
+ </pluginRepositories>
+-->
+
+ <!-- TODO: should be the maven local home -->
+ <!-- TODO: substitution not working -->
+<!--
+ <local>
+ <repository>${user.home}/.m2/repository</repository>
+ </local>
+-->
+
<!-- Default plugins
<plugins>
<plugin>
1.6 +5 -6 maven-components/maven-core/src/test/java/org/apache/maven/MavenTestCase.java
Index: MavenTestCase.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/MavenTestCase.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- MavenTestCase.java 26 Aug 2004 04:39:53 -0000 1.5
+++ MavenTestCase.java 2 Sep 2004 12:34:17 -0000 1.6
@@ -76,6 +76,7 @@
getContainer().addContextValue( "rootClassRealm", rootClassRealm );
+ // TODO: are these used? Are they correct?
getContainer().addContextValue( "maven.home", new File( getBasedir(), "target/maven.home" ).getPath() );
getContainer().addContextValue( "maven.home.local",
@@ -105,13 +106,13 @@
if ( pom != null )
{
- project = projectBuilder.build( pom, localRepository );
+ project = projectBuilder.build( pom );
}
else
{
File f = new File( basedir, "target/test-classes/pom.xml" );
- project = projectBuilder.build( f, localRepository );
+ project = projectBuilder.build( f );
}
return createGoalExecutionContext( project, localRepository, goal );
@@ -120,8 +121,6 @@
protected MavenGoalExecutionContext createGoalExecutionContext( MavenProject project,
ArtifactRepository localRepository, String goal )
{
- project.setProperty( "foo", "bar" );
-
List goals = new ArrayList();
MavenSession session = new MavenSession( getContainer(), pluginManager, project, localRepository, goals );
@@ -143,4 +142,4 @@
return context;
}
-}
\ No newline at end of file
+}
1.3 +1 -2 maven-components/maven-core/src/test/java/org/apache/maven/lifecycle/goal/phase/GoalResolutionPhaseTest.java
Index: GoalResolutionPhaseTest.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/lifecycle/goal/phase/GoalResolutionPhaseTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- GoalResolutionPhaseTest.java 26 Aug 2004 04:40:00 -0000 1.2
+++ GoalResolutionPhaseTest.java 2 Sep 2004 12:34:17 -0000 1.3
@@ -264,7 +264,6 @@
model.setPostGoals( postGoals );
MavenProject project = new MavenProject( model );
- project.setProperties( new TreeMap() );
MavenGoalExecutionContext context = createGoalExecutionContext( project, localRepository, mainGoal );
context.setGoalName( mainGoal );
@@ -292,4 +291,4 @@
assertEquals( failureMessage, goal, resolvedGoal );
}
}
-}
\ No newline at end of file
+}
1.5 +2 -18 maven-components/maven-core/src/test/java/org/apache/maven/plugin/OgnlProjectValueExtractorTest.java
Index: OgnlProjectValueExtractorTest.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/plugin/OgnlProjectValueExtractorTest.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- OgnlProjectValueExtractorTest.java 15 Aug 2004 15:01:52 -0000 1.4
+++ OgnlProjectValueExtractorTest.java 2 Sep 2004 12:34:18 -0000 1.5
@@ -30,25 +30,9 @@
File f = new File( basedir, "src/test/resources/pom.xml" );
- project = builder.build( f, new ArtifactRepository() );
-
- project.setProperty( "foo", "bar" );
+ project = builder.build( f );
context = createGoalExecutionContext();
- }
-
- public void testPropertyValueExtraction()
- {
- Object value = OgnlProjectValueExtractor.evaluate( "#foo", context );
-
- assertEquals( "bar", value );
- }
-
- public void testValueExtractionWithAPropertyContainingAPath()
- {
- Object value = OgnlProjectValueExtractor.evaluate( "#foo/META-INF/maven", context );
-
- assertEquals( "bar/META-INF/maven", value );
}
public void testValueExtractionWithAPomValueContainingAPath()
1.3 +4 -26 maven-components/maven-core/src/test/java/org/apache/maven/project/AbstractProjectTestCase.java
Index: AbstractProjectTestCase.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/AbstractProjectTestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractProjectTestCase.java 12 Aug 2004 17:55:48 -0000 1.2
+++ AbstractProjectTestCase.java 2 Sep 2004 12:34:18 -0000 1.3
@@ -32,43 +32,21 @@
return localRepository;
}
- public void initLocalRepository()
- {
- File tempLocalRepository = new File( getBasedir(), "target/temp-repo-local" );
-
- // delete
- try
- {
- FileUtils.deleteDirectory( tempLocalRepository );
- }
- catch ( Exception e )
- {
- System.out.println( "Could not delete the remaining from previous tests!! Test will continue anyway " );
-
- }
-
- tempLocalRepository.mkdirs();
-
- System.out.println( "Created temporary local repository: " + tempLocalRepository );
-
- System.setProperty( "maven.repo.local", tempLocalRepository.getPath() );
- }
-
- protected MavenProject buildProject( File f, ArtifactRepository localRepository, boolean followTransitiveDeps )
+ protected MavenProject buildProject( File f, boolean followTransitiveDeps )
throws Exception
{
MavenProject project;
- project = projectBuilder.build( f, localRepository, followTransitiveDeps );
+ project = projectBuilder.build( f, followTransitiveDeps );
assertNotNull( "Project is null", project );
return project;
}
- protected MavenProject buildProject( File f, ArtifactRepository localRepository )
+ protected MavenProject buildProject( File f )
throws Exception
{
- return buildProject( f, localRepository, false );
+ return buildProject( f, false );
}
}
1.2 +2 -2 maven-components/maven-core/src/test/java/org/apache/maven/project/ProjectBaseDirectoryAlignmentTest.java
Index: ProjectBaseDirectoryAlignmentTest.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/ProjectBaseDirectoryAlignmentTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProjectBaseDirectoryAlignmentTest.java 9 Aug 2004 19:02:38 -0000 1.1
+++ ProjectBaseDirectoryAlignmentTest.java 2 Sep 2004 12:34:18 -0000 1.2
@@ -17,7 +17,7 @@
{
File f = new File( basedir, dir + "project-which-needs-directory-alignment.xml" );
- MavenProject project = projectBuilder.build( f, getLocalRepository(), false );
+ MavenProject project = projectBuilder.build( f, false );
assertNotNull( "Test project can't be null!", project );
@@ -32,7 +32,7 @@
assertTrue( resource.getDirectory().startsWith( basedir ) );
}
- /*
+ /* TODO: why commented out?
public void testProjectDirectoryBaseDirectoryAlignmentInheritance()
throws Exception
{
1.2 +5 -9 maven-components/maven-core/src/test/java/org/apache/maven/project/inheritance/ProjectInheritanceTestCase.java
Index: ProjectInheritanceTestCase.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/inheritance/ProjectInheritanceTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProjectInheritanceTestCase.java 9 Aug 2004 19:02:39 -0000 1.1
+++ ProjectInheritanceTestCase.java 2 Sep 2004 12:34:18 -0000 1.2
@@ -31,17 +31,13 @@
super.setUp();
projectBuilder = (MavenProjectBuilder) lookup( MavenProjectBuilder.ROLE );
+
+ System.setProperty( "maven.repo.local", getLocalRepository() );
}
- protected ArtifactRepository getLocalRepository()
+ private String getLocalRepository()
{
- ArtifactRepository r = new ArtifactRepository();
-
- String s = new File( basedir, "src/test/resources/inheritance-repo/" + getTestSeries() ).getPath();
-
- r.setUrl( "file://" + s );
-
- return r;
+ return new File( basedir, "src/test/resources/inheritance-repo/" + getTestSeries() ).getPath();
}
protected File projectFile( String name )
1.2 +2 -2 maven-components/maven-core/src/test/java/org/apache/maven/project/inheritance/t00/ProjectInheritanceTest.java
Index: ProjectInheritanceTest.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/inheritance/t00/ProjectInheritanceTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProjectInheritanceTest.java 9 Aug 2004 19:02:39 -0000 1.1
+++ ProjectInheritanceTest.java 2 Sep 2004 12:34:18 -0000 1.2
@@ -36,7 +36,7 @@
public void testProjectInheritance()
throws Exception
{
- MavenProject p4 = projectBuilder.build( projectFile( "p4" ), getLocalRepository() );
+ MavenProject p4 = projectBuilder.build( projectFile( "p4" ) );
assertEquals( "p4", p4.getName() );
1.2 +6 -6 maven-components/maven-core/src/test/java/org/apache/maven/project/inheritance/t01/ProjectInheritanceTest.java
Index: ProjectInheritanceTest.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/inheritance/t01/ProjectInheritanceTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ProjectInheritanceTest.java 9 Aug 2004 19:02:39 -0000 1.1
+++ ProjectInheritanceTest.java 2 Sep 2004 12:34:18 -0000 1.2
@@ -39,7 +39,7 @@
// Check p0 value for org name
// ----------------------------------------------------------------------
- MavenProject p0 = projectBuilder.build( projectFile( "p0" ), getLocalRepository() );
+ MavenProject p0 = projectBuilder.build( projectFile( "p0" ) );
assertEquals( "p0-org", p0.getOrganization().getName() );
@@ -47,7 +47,7 @@
// Check p1 value for org name
// ----------------------------------------------------------------------
- MavenProject p1 = projectBuilder.build( projectFile( "p1" ), getLocalRepository() );
+ MavenProject p1 = projectBuilder.build( projectFile( "p1" ) );
assertEquals( "p1-org", p1.getOrganization().getName() );
@@ -55,7 +55,7 @@
// Check p2 value for org name
// ----------------------------------------------------------------------
- MavenProject p2 = projectBuilder.build( projectFile( "p2" ), getLocalRepository() );
+ MavenProject p2 = projectBuilder.build( projectFile( "p2" ) );
assertEquals( "p2-org", p2.getOrganization().getName() );
@@ -63,7 +63,7 @@
// Check p2 value for org name
// ----------------------------------------------------------------------
- MavenProject p3 = projectBuilder.build( projectFile( "p3" ), getLocalRepository() );
+ MavenProject p3 = projectBuilder.build( projectFile( "p3" ) );
assertEquals( "p3-org", p3.getOrganization().getName() );
@@ -71,7 +71,7 @@
// Check p4 value for org name
// ----------------------------------------------------------------------
- MavenProject p4 = projectBuilder.build( projectFile( "p4" ), getLocalRepository() );
+ MavenProject p4 = projectBuilder.build( projectFile( "p4" ) );
assertEquals( "p4-org", p4.getOrganization().getName() );
}
1.14 +15 -3 maven-components/maven-core-it/maven-core-it.sh
Index: maven-core-it.sh
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/maven-core-it.sh,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- maven-core-it.sh 15 Aug 2004 16:52:07 -0000 1.13
+++ maven-core-it.sh 2 Sep 2004 12:34:18 -0000 1.14
@@ -10,6 +10,17 @@
integration_tests=`cat integration-tests.txt | egrep -v '^#'`
+# TODO: this is rubbish. Let's rewrite this in java
+local_repo=`cat $HOME/.m2/pom.xml | tr '\n' ' ' | sed 's/^.*<local> *<repository>//' | sed 's#</repository> *</local>.*$##'`
+
+for i in "$@"
+do
+ j=`echo $i | sed 's/^-Dmaven.repo.local=//'`
+ if [ "$i" != "$j" ]; then
+ local_repo=$j
+ fi
+done
+
for integration_test in $integration_tests
do
(
@@ -18,11 +29,11 @@
if [ -f prebuild.hook ]
then
echo
- sh prebuild.hook
+ sh prebuild.hook "$local_repo"
echo
fi
- m2 clean:clean `cat goals.txt`
+ m2 -Dmaven.repo.local="$local_repo" clean:clean `cat goals.txt`
if [ -f postbuild.hook ]
then
@@ -33,7 +44,7 @@
basedir=.
- java -cp "$cp" $verifier "$basedir"
+ java -cp "$cp" $verifier "$basedir" "$local_repo"
) > ${integration_test}-log.txt
if [ "$?" = "0" ]
@@ -47,3 +58,4 @@
fi
done
+
1.2 +5 -5 maven-components/maven-core-it/it0002/expected-results.txt
Index: expected-results.txt
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0002/expected-results.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- expected-results.txt 17 Jun 2004 19:36:02 -0000 1.1
+++ expected-results.txt 2 Sep 2004 12:34:18 -0000 1.2
@@ -1,5 +1,5 @@
-target/classes/org/apache/maven/it0001/Person.class
-target/test-classes/org/apache/maven/it0001/PersonTest.class
-target/maven-core-it0001-1.0.jar
-target/maven-core-it0001-1.0.jar!/it0001.properties
-${maven.repo.local}/maven/jars/maven-it-support-1.0.jar
+target/classes/org/apache/maven/it0002/Person.class
+target/test-classes/org/apache/maven/it0002/PersonTest.class
+target/maven-core-it0002-1.0.jar
+target/maven-core-it0002-1.0.jar!/it0002.properties
+${localRepository}/maven/jars/maven-it-support-1.0.jar
1.3 +1 -3 maven-components/maven-core-it/it0002/prebuild.hook
Index: prebuild.hook
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0002/prebuild.hook,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- prebuild.hook 27 Jul 2004 13:23:35 -0000 1.2
+++ prebuild.hook 2 Sep 2004 12:34:18 -0000 1.3
@@ -1,7 +1,5 @@
#!/bin/sh
-repoLocal=`cat $HOME/maven.properties | grep "maven.repo.local" | sed 's/^.*= *//'`
-
echo "Removing maven-it-support-1.0.jar from the local repository so we can verify its downloading ..."
-rm -f $repoLocal/maven/jars/maven-it-support-1.0.jar > /dev/null 2>&1
+rm -f $1/maven/jars/maven-it-support-1.0.jar > /dev/null 2>&1
1.2 +1 -1 maven-components/maven-core-it/it0003/expected-results.txt
Index: expected-results.txt
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0003/expected-results.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- expected-results.txt 18 Jun 2004 02:08:37 -0000 1.1
+++ expected-results.txt 2 Sep 2004 12:34:18 -0000 1.2
@@ -2,4 +2,4 @@
target/test-classes/org/apache/maven/it0003/PersonTest.class
target/maven-core-it0003-1.0.jar
target/maven-core-it0003-1.0.jar!/it0003.properties
-${maven.repo.local}/maven/jars/maven-core-it0003-1.0.jar
+${localRepository}/maven/jars/maven-core-it0003-1.0.jar
1.3 +1 -3 maven-components/maven-core-it/it0003/prebuild.hook
Index: prebuild.hook
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0003/prebuild.hook,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- prebuild.hook 27 Jul 2004 13:23:35 -0000 1.2
+++ prebuild.hook 2 Sep 2004 12:34:18 -0000 1.3
@@ -1,7 +1,5 @@
#!/bin/sh
-repoLocal=`cat $HOME/maven.properties | grep "maven.repo.local" | sed 's/^.*= *//'`
-
echo "Removing maven-core-it0003-1.0.jar from the local repository so we can verify jar installation ..."
-rm -f $repoLocal/maven/jars/maven-core-it0003-1.0.jar > /dev/null 2>&1
+rm -f $1/maven/jars/maven-core-it0003-1.0.jar > /dev/null 2>&1
1.2 +1 -1 maven-components/maven-core-it/it0004/expected-results.txt
Index: expected-results.txt
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0004/expected-results.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- expected-results.txt 5 Jul 2004 16:53:16 -0000 1.1
+++ expected-results.txt 2 Sep 2004 12:34:18 -0000 1.2
@@ -1 +1 @@
-${maven.repo.local}/maven/poms/maven-core-it0004-1.0.pom
+${localRepository}/maven/poms/maven-core-it0004-1.0.pom
1.3 +1 -3 maven-components/maven-core-it/it0004/prebuild.hook
Index: prebuild.hook
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0004/prebuild.hook,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- prebuild.hook 27 Jul 2004 13:23:35 -0000 1.2
+++ prebuild.hook 2 Sep 2004 12:34:18 -0000 1.3
@@ -1,7 +1,5 @@
#!/bin/sh
-repoLocal=`cat $HOME/maven.properties | grep "maven.repo.local" | sed 's/^.*= *//'`
-
echo "Removing maven-core-it0004-1.0.pom from the local repository so we can verify pom installation ..."
-rm -f $repoLocal/maven/poms/maven-core-it0004-1.0.pom > /dev/null 2>&1
+rm -f $1/maven/poms/maven-core-it0004-1.0.pom > /dev/null 2>&1
1.3 +1 -1 maven-components/maven-core-it/it0005/expected-results.txt
Index: expected-results.txt
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0005/expected-results.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- expected-results.txt 15 Aug 2004 16:18:21 -0000 1.2
+++ expected-results.txt 2 Sep 2004 12:34:18 -0000 1.3
@@ -1 +1 @@
-${maven.repo.local}/maven/poms/maven-core-it0005-1.0-SNAPSHOT.pom
+${localRepository}/maven/poms/maven-core-it0005-1.0-SNAPSHOT.pom
1.4 +1 -3 maven-components/maven-core-it/it0005/prebuild.hook
Index: prebuild.hook
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0005/prebuild.hook,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- prebuild.hook 15 Aug 2004 16:18:21 -0000 1.3
+++ prebuild.hook 2 Sep 2004 12:34:18 -0000 1.4
@@ -1,7 +1,5 @@
#!/bin/sh
-repoLocal=`cat $HOME/maven.properties | grep "maven.repo.local" | sed 's/^.*= *//'`
-
echo "Removing maven-core-it0005-1.0.pom from the local repository so we can verify pom installation ..."
-rm -f $repoLocal/maven/poms/maven-core-it0005-1.0-SNAPSHOT.pom > /dev/null 2>&1
+rm -f $1/maven/poms/maven-core-it0005-1.0-SNAPSHOT.pom > /dev/null 2>&1
1.3 +1 -1 maven-components/maven-core-it/it0007/expected-results.txt
Index: expected-results.txt
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0007/expected-results.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- expected-results.txt 10 Aug 2004 17:54:40 -0000 1.2
+++ expected-results.txt 2 Sep 2004 12:34:18 -0000 1.3
@@ -2,4 +2,4 @@
target/test-classes/org/apache/maven/it0007/PersonTest.class
target/maven-core-it0007-1.0.jar
target/maven-core-it0007-1.0.jar!/it0007.properties
-${maven.repo.local}/maven/poms/maven-it-support-parent-1.0.pom
+${localRepository}/maven/poms/maven-it-support-parent-1.0.pom
1.2 +1 -3 maven-components/maven-core-it/it0007/prebuild.hook
Index: prebuild.hook
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it/it0007/prebuild.hook,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- prebuild.hook 10 Aug 2004 17:53:37 -0000 1.1
+++ prebuild.hook 2 Sep 2004 12:34:18 -0000 1.2
@@ -1,7 +1,5 @@
#!/bin/sh
-repoLocal=`cat $HOME/maven.properties | grep "maven.repo.local" | sed 's/^.*= *//'`
-
echo "Removing maven-it-support-parent-1.0.pom from the local repository so we can verify its downloading ..."
-rm -f $repoLocal/maven/poms/maven-it-support-parent-1.0.pom > /dev/null 2>&1
+rm -f $1/maven/poms/maven-it-support-parent-1.0.pom > /dev/null 2>&1
1.11 +5 -47 maven-components/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java
Index: Verifier.java
===================================================================
RCS file: /home/cvs/maven-components/maven-core-it-verifier/src/main/java/org/apache/maven/it/Verifier.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Verifier.java 15 Aug 2004 16:49:32 -0000 1.10
+++ Verifier.java 2 Sep 2004 12:34:18 -0000 1.11
@@ -21,61 +21,19 @@
private String mavenRepoLocal;
- public Verifier( String basedir )
+ public Verifier( String basedir, String mavenRepoLocal )
{
this.basedir = basedir;
+ this.mavenRepoLocal = mavenRepoLocal;
}
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
- public static String interpolate( String text, Map namespace )
- {
- Iterator keys = namespace.keySet().iterator();
-
- while ( keys.hasNext() )
- {
- String key = keys.next().toString();
-
- Object obj = namespace.get( key );
-
- String value = obj.toString();
-
- text = replace( text, "${" + key + "}", value );
-
- if ( key.indexOf( " " ) == -1 )
- {
- text = replace( text, "$" + key, value );
- }
- }
- return text;
- }
-
public void verify()
throws VerificationException
{
- Properties properties = new Properties();
-
- try
- {
- properties.load( new FileInputStream( new File( System.getProperty( "user.home" ), "maven.properties" ) ) );
-
- for ( Iterator i = properties.keySet().iterator(); i.hasNext(); )
- {
- String key = (String) i.next();
-
- properties.setProperty( key, interpolate( properties.getProperty( key ), System.getProperties() ) );
- }
-
- }
- catch ( IOException e )
- {
- throw new VerificationException( "Can't find the maven.properties file! Verification can't proceed!" );
- }
-
- mavenRepoLocal = properties.getProperty( "maven.repo.local" );
-
try
{
BufferedReader reader = new BufferedReader( new FileReader( new File( basedir, "expected-results.txt" ) ) );
@@ -98,7 +56,7 @@
private void verifyExpectedResult( String line )
throws VerificationException
{
- line = replace( line, "${maven.repo.local}", mavenRepoLocal );
+ line = replace( line, "${localRepository}", mavenRepoLocal );
if ( line.indexOf( "!/" ) > 0 )
{
@@ -191,7 +149,7 @@
public static void main( String args[] )
{
- Verifier verifier = new Verifier( args[0] );
+ Verifier verifier = new Verifier( args[0], args[1] );
try
{
1.5 +46 -49 maven-components/maven-mboot2/src/main/java/ArtifactDownloader.java
Index: ArtifactDownloader.java
===================================================================
RCS file: /home/cvs/maven-components/maven-mboot2/src/main/java/ArtifactDownloader.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- ArtifactDownloader.java 14 Aug 2004 06:59:53 -0000 1.4
+++ ArtifactDownloader.java 2 Sep 2004 12:34:18 -0000 1.5
@@ -6,7 +6,6 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Set;
import java.util.HashSet;
@@ -21,7 +20,7 @@
private boolean useTimestamp = true;
- private boolean ignoreErrors = true;
+ private boolean ignoreErrors = false;
private String proxyHost;
@@ -31,26 +30,25 @@
private String proxyPassword;
- public ArtifactDownloader( Properties properties )
+ public ArtifactDownloader( String localRepository, List remoteRepositories )
throws Exception
{
- setRemoteRepo( properties.getProperty( "maven.repo.remote" ) );
+ setRemoteRepos( remoteRepositories );
- String mavenRepoLocalProperty = properties.getProperty( "maven.repo.local" );
- if ( mavenRepoLocalProperty == null )
+ if ( localRepository == null )
{
- System.err.println( "maven.repo.local not specified in ~/maven.properties" );
+ System.err.println( "local repository not specified" );
System.exit( 1 );
}
- mavenRepoLocal = new File( mavenRepoLocalProperty );
+ mavenRepoLocal = new File( localRepository );
if ( !mavenRepoLocal.exists() )
{
if ( !mavenRepoLocal.mkdirs() )
{
- System.err.println( "Cannot create the specified maven.repo.local: " + mavenRepoLocal );
+ System.err.println( "Cannot create the specified local repository: " + mavenRepoLocal );
System.exit( 1 );
}
@@ -63,7 +61,8 @@
System.exit( 1 );
}
- System.out.println( "Using the following for your maven.repo.local: " + mavenRepoLocal );
+ System.out.println( "Using the following for your local repository: " + mavenRepoLocal );
+ System.out.println( "Using the following for your remote repositories: " + remoteRepos );
}
public File getMavenRepoLocal()
@@ -78,62 +77,53 @@
{
for ( Iterator j = files.iterator(); j.hasNext(); )
{
- try
+ String file = (String) j.next();
+
+ if ( !downloadedArtifacts.contains( file ) )
{
- String file = (String) j.next();
+ File destinationFile = new File( mavenRepoLocal, file );
+ // The directory structure for this project may
+ // not exists so create it if missing.
+ File directory = destinationFile.getParentFile();
- if ( !downloadedArtifacts.contains( file ) )
+ if ( directory.exists() == false )
{
- File destinationFile = new File( mavenRepoLocal, file );
- // The directory structure for this project may
- // not exists so create it if missing.
- File directory = destinationFile.getParentFile();
-
- if ( directory.exists() == false )
- {
- directory.mkdirs();
- }
-
- if ( destinationFile.exists() && file.indexOf( SNAPSHOT_SIGNATURE ) < 0 )
- {
- continue;
- }
-
- getRemoteArtifact( file, destinationFile );
-
- if ( !destinationFile.exists() )
- {
- throw new Exception( "Failed to download " + file );
- }
+ directory.mkdirs();
+ }
- downloadedArtifacts.add( file );
+ if ( destinationFile.exists() && file.indexOf( SNAPSHOT_SIGNATURE ) < 0 )
+ {
+ continue;
}
- }
- catch ( Exception e )
- {
- throw new Exception( e );
+
+ getRemoteArtifact( file, destinationFile );
+
+ if ( !destinationFile.exists() )
+ {
+ throw new Exception( "Failed to download " + file );
+ }
+
+ downloadedArtifacts.add( file );
}
}
}
- private void setRemoteRepo( String repos )
+ private void setRemoteRepos( List repositories )
{
remoteRepos = new ArrayList();
- if ( repos == null )
+ if ( repositories != null )
{
- remoteRepos.add( "http://www.ibiblio.org/maven/" );
- return;
+ remoteRepos.addAll( repositories );
}
- StringTokenizer st = new StringTokenizer( repos, "," );
- while ( st.hasMoreTokens() )
+ if ( repositories.isEmpty() )
{
- remoteRepos.add( st.nextToken().trim() );
+ remoteRepos.add( "http://www.ibiblio.org/maven/" );
}
}
- private List getRemoteRepo()
+ private List getRemoteRepos()
{
return remoteRepos;
}
@@ -142,7 +132,7 @@
{
boolean fileFound = false;
- for ( Iterator i = getRemoteRepo().iterator(); i.hasNext(); )
+ for ( Iterator i = getRemoteRepos().iterator(); i.hasNext(); )
{
String remoteRepo = (String) i.next();
@@ -162,11 +152,17 @@
url = replace( url, "http:/", "http://" );
}
}
+ else
+ {
+ // THe JDK URL for file: should have one or no / instead of // for some reason
+ url = replace( url, "file://", "file:" );
+ }
// Attempt to retrieve the artifact and set the checksum if retrieval
// of the checksum file was successful.
try
{
+ log( "Downloading " + url );
HttpUtils.getFile( url,
destinationFile,
ignoreErrors,
@@ -183,6 +179,7 @@
}
catch ( FileNotFoundException e )
{
+ log( "Artifact not found at [" + url + "]" );
// Ignore
}
catch ( Exception e )
@@ -204,7 +201,7 @@
//
// print a warning, in any case, so user catches on to mistyped
// hostnames, or other snafus
- log( "Error retrieving artifact from [" + url + "]: " );
+ log( "Error retrieving artifact from [" + url + "]: " + e );
}
}
1.21 +108 -90 maven-components/maven-mboot2/src/main/java/MBoot.java
Index: MBoot.java
===================================================================
RCS file: /home/cvs/maven-components/maven-mboot2/src/main/java/MBoot.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- MBoot.java 26 Aug 2004 11:50:39 -0000 1.20
+++ MBoot.java 2 Sep 2004 12:34:19 -0000 1.21
@@ -18,7 +18,6 @@
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
-import java.util.Properties;
import java.util.Date;
public class MBoot
@@ -117,8 +116,6 @@
private ModelReader reader;
- private Properties properties;
-
private String repoLocal;
private List mbootDependencies;
@@ -142,45 +139,54 @@
public void run( String[] args )
throws Exception
{
- File mavenPropertiesFile = new File( System.getProperty( "user.home" ), "maven.properties" );
+ File userPomFile = new File( System.getProperty( "user.home" ), ".m2/pom.xml" );
- if ( !mavenPropertiesFile.exists() )
+ reader = new ModelReader();
+ if ( !reader.parse( userPomFile ) )
{
- System.out.println( "You must have a ~/maven.properties file and must contain the following entries:" );
-
- System.out.println( "maven.home = /path/to/m2/installation" );
-
- System.out.println( "maven.repo.local = /path/to/m2/repository" );
+ System.out.println( "You must have a ~/.m2/pom.xml file and must contain the following entries:" );
+ System.out.println( "<local>\n" );
+ System.out.println( " <repository>/path/to/m2/repository</repository> (required)\n" );
+ System.out.println( " <online>true</online> (optional)\n" );
+ System.out.println( "</local>" );
System.exit( 1 );
}
- Date fullStop;
+ String mavenHome = null;
- Date fullStart = new Date();
+ if ( args.length == 1 )
+ {
+ mavenHome = args[0];
+ }
+ else
+ {
+ mavenHome = System.getProperty( "maven.home" );
+
+ if ( mavenHome == null )
+ {
+ mavenHome = new File( System.getProperty( "user.home" ), "m2" ).getAbsolutePath();
+ }
+ }
- properties = loadProperties( mavenPropertiesFile );
+ File dist = new File( mavenHome );
- // Make the system properties override maven.properties
- properties.putAll( System.getProperties() );
+ System.out.println( "Maven installation directory: " + dist );
- for ( Iterator i = properties.keySet().iterator(); i.hasNext(); )
- {
- String key = (String) i.next();
+ Date fullStop;
- // TODO: the namespace should be "properties" itself to support variables within the same file,
- // however, StringUtils would need to support recursive replacement
- properties.setProperty( key, StringUtils.interpolate( properties.getProperty( key ), System.getProperties() ) );
- }
+ Date fullStart = new Date();
- String onlineProperty = properties.getProperty( "maven.online" );
+ String onlineProperty = System.getProperty( "maven.online", reader.getLocal().getOnline() );
if ( onlineProperty != null && onlineProperty.equals( "false" ) )
{
online = false;
}
- downloader = new ArtifactDownloader( properties );
+ String mavenRepoLocal = System.getProperty( "maven.repo.local", reader.getLocal().getRepository() );
+
+ downloader = new ArtifactDownloader( mavenRepoLocal, reader.getRemoteRepositories() );
repoLocal = downloader.getMavenRepoLocal().getPath();
@@ -250,24 +256,6 @@
// build the installation
- String mavenHome;
-
- if ( args.length == 1 )
- {
- mavenHome = args[0];
- }
- else
- {
- mavenHome = properties.getProperty( "maven.home" );
-
- if ( mavenHome == null )
- {
- mavenHome = new File( System.getProperty( "user.home" ), "m2" ).getAbsolutePath();
- }
- }
-
- File dist = new File( mavenHome );
-
FileUtils.deleteDirectory( dist );
// ----------------------------------------------------------------------
@@ -328,7 +316,8 @@
d.artifactId.equals( "xpp3" ) ||
d.artifactId.equals( "junit" ) ||
d.artifactId.equals( "wagon-api" ) ||
- d.artifactId.equals( "maven-artifact" ) )
+ d.artifactId.equals( "maven-artifact" )
+)
{
continue;
}
@@ -845,53 +834,6 @@
return d.getArtifactDirectory() + pathSeparator + "jars" + pathSeparator + d.getArtifact();
}
- private Properties loadProperties( File file )
- {
- try
- {
- return loadProperties( new FileInputStream( file ) );
- }
- catch ( Exception e )
- {
- // ignore
- }
-
- return new Properties();
- }
-
- private static Properties loadProperties( InputStream is )
- {
- Properties properties = new Properties();
-
- try
- {
- if ( is != null )
- {
- properties.load( is );
- }
- }
- catch ( IOException e )
- {
- // ignore
- }
- finally
- {
- try
- {
- if ( is != null )
- {
- is.close();
- }
- }
- catch ( IOException e )
- {
- // ignore
- }
- }
-
- return properties;
- }
-
class ModelReader
extends DefaultHandler
{
@@ -911,8 +853,12 @@
private List dependencies = new ArrayList();
+ private List remoteRepositories = new ArrayList();
+
private UnitTests unitTests;
+ private Local local = new Local();
+
private List resources = new ArrayList();
private Dependency currentDependency;
@@ -925,10 +871,14 @@
private boolean insideDependency = false;
+ private boolean insideLocal = false;
+
private boolean insideUnitTest = false;
private boolean insideResource = false;
+ private boolean insideRepository = false;
+
private StringBuffer bodyText = new StringBuffer();
private File file;
@@ -938,6 +888,11 @@
dependencies = new ArrayList();
}
+ public List getRemoteRepositories()
+ {
+ return remoteRepositories;
+ }
+
public List getDependencies()
{
return dependencies;
@@ -953,6 +908,11 @@
return resources;
}
+ public Local getLocal()
+ {
+ return local;
+ }
+
public boolean parse( File file )
{
this.file = file;
@@ -983,6 +943,14 @@
{
insideParent = true;
}
+ else if ( rawName.equals( "repository" ) && !insideLocal )
+ {
+ insideRepository = true;
+ }
+ else if ( rawName.equals( "local" ) )
+ {
+ insideLocal = true;
+ }
else if ( rawName.equals( "unitTest" ) )
{
unitTests = new UnitTests();
@@ -1053,6 +1021,10 @@
insideParent = false;
}
+ else if ( rawName.equals( "local" ) )
+ {
+ insideLocal = false;
+ }
else if ( rawName.equals( "unitTest" ) )
{
insideUnitTest = false;
@@ -1164,6 +1136,24 @@
{
type = getBodyText();
}
+ else if ( rawName.equals( "repository" ) )
+ {
+ if ( insideLocal )
+ {
+ local.repository = getBodyText();
+ }
+ else
+ {
+ insideRepository = false;
+ }
+ }
+ else if ( insideRepository )
+ {
+ if ( rawName.equals( "url" ) )
+ {
+ remoteRepositories.add( getBodyText() );
+ }
+ }
bodyText = new StringBuffer();
}
@@ -1450,5 +1440,33 @@
{
this.filtering = filtering;
}
+ }
+
+ public static class Local
+ implements Serializable
+ {
+ private String repository;
+
+ private String online;
+
+ public String getRepository()
+ {
+ return this.repository;
+ }
+
+ public void setRepository( String repository )
+ {
+ this.repository = repository;
+ }
+
+ public String getOnline()
+ {
+ return this.online;
+ }
+
+ public void setOnline( String online )
+ {
+ this.online = online;
+ }
}
}
1.52 +216 -5 maven-components/maven-model/maven.mdo
Index: maven.mdo
===================================================================
RCS file: /home/cvs/maven-components/maven-model/maven.mdo,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -r1.51 -r1.52
--- maven.mdo 26 Aug 2004 01:18:19 -0000 1.51
+++ maven.mdo 2 Sep 2004 12:34:19 -0000 1.52
@@ -177,15 +177,16 @@
<version>3.0.0</version>
<description>The FQDN of the host where the project's artifacts are uploaded.</description>
<type>String</type>
- <comment>This naming is inconsistent and distriubtion should occur from a repository structure.</comment>
+ <comment>This naming is inconsistent and distribution should occur from a repository structure.</comment>
</field>
<field>
<name>distributionDirectory</name>
<version>3.0.0</version>
<description>The directory on the distribution host where artifacts are placed when uploaded.</description>
<type>String</type>
- <comment>This naming is inconsistent and distriubtion should occur from a repository structure.</comment>
+ <comment>This naming is inconsistent and distribution should occur from a repository structure.</comment>
</field>
+
<field>
<name>repositories</name>
<version>4.0.0</version>
@@ -193,7 +194,17 @@
<type>java.util.List</type>
<defaultValue>new ArrayList()</defaultValue>
</field>
-
+<!-- @todo this will not current parse. We want to have a repository element inside here, but it expects a PluginRepository class. Need a way for modello to specify the list tag -->
+<!--
+ <field>
+ <name>pluginRepositories</name>
+ <version>4.0.0</version>
+ <description>The lists of the remote repositories for discovering plugins</description>
+ <type>java.util.List</type>
+ <defaultValue>new ArrayList()</defaultValue>
+ <comment>This may be removed or relocated in the near future. It is undecided whether plugins really need a remote repository set of their own.</comment>
+ </field>
+-->
<field>
<name>mailingLists</name>
<version>3.0.0+</version>
@@ -241,6 +252,18 @@
<comment>These should ultimately only be compile time dependencies when transitive dependencies come into play.</comment>
</field>
<field>
+ <name>overrides</name>
+ <version>4.0.0</version>
+ <description>
+ This element describes all of the dependency overrides for a
+ project. Each dependency is described by a
+ <code>override</code> element, which is then described by
+ additional elements (described below).
+ </description>
+ <type>java.util.List</type>
+ <defaultValue>new ArrayList()</defaultValue>
+ </field>
+ <field>
<name>licenses</name>
<version>3.0.0+</version>
<description>
@@ -325,6 +348,25 @@
<type>DistributionManagement</type>
</field>
<field>
+ <name>local</name>
+ <version>4.0.0</version>
+ <required>false</required>
+ <description>Local configuration information.</description>
+ <type>Local</type>
+ </field>
+ <!-- @todo long run 4.0.0 may not need properties, with the parameters being specified
+ for the plugin directly -->
+ <field>
+ <name>properties</name>
+ <version>3.0.0+</version>
+ <description>
+ Properties about the project. This allows you to configure your project and the
+ plugins it uses.
+ </description>
+ <type>java.util.Properties</type>
+ <defaultValue>new Properties()</defaultValue>
+ </field>
+ <field>
<name>preGoals</name>
<version>4.0.0</version>
<description>Set of decorator(s) injected before the target goal(s).</description>
@@ -340,6 +382,7 @@
</field>
</fields>
<!-- We need this because we can't use package as a field name. -->
+ <!-- @todo this means it is undocumented. Should we instead provide an optional field name so package can be mapped to the field packageName? -->
<codeSegments>
<codeSegment>
<version>3.0.0+</version>
@@ -404,9 +447,10 @@
</codeSegment>
</codeSegments>
</class>
+ <!-- @todo: is any of this too CVS specific? Investigate other SCMs -->
<class>
<name>Branch</name>
- <version>3.0.0</version>
+ <version>3.0.0+</version>
<description>
This element describes each of the branches of the
project. Each branch is described by a
@@ -416,7 +460,8 @@
<fields>
<field>
<name>tag</name>
- <version>3.0.0</version>
+ <version>3.0.0+</version>
+ <required>true</required>
<description>
The branch tag in the version control system
(e.g. cvs) used by the project for the source
@@ -425,6 +470,24 @@
</description>
<type>String</type>
</field>
+ <field>
+ <name>description</name>
+ <version>4.0.0</version>
+ <description>
+ A description of the branch and its strategy.
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>lastMergeTag</name>
+ <version>4.0.0</version>
+ <description>
+ This is the tag in the version control system that was last used
+ to merge from the branch to the current codebase. Future merges
+ should merge only the changes from this tag to the next.
+ </description>
+ <type>String</type>
+ </field>
</fields>
</class>
<class>
@@ -537,6 +600,16 @@
<type>String</type>
</field>
<field>
+ <name>finalName</name>
+ <version>4.0.0</version>
+ <description>
+ The filename (including an extension, but with no path information) that the produced artifact
+ will be called. The default value is artifactId-version.extension (where extension is derived from
+ type).
+ </description>
+ <type>String</type>
+ </field>
+ <field>
<name>testOutput</name>
<version>4.0.0</version>
<description>
@@ -729,6 +802,64 @@
</codeSegments>
</class>
<class>
+ <name>Override</name>
+ <version>4.0.0</version>
+ <fields>
+ <field>
+ <name>groupId</name>
+ <version>4.0.0</version>
+ <required>true</required>
+ <description>
+ The project group that produced the dependency, e.g.
+ <code>geronimo</code>.
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>4.0.0</version>
+ <required>true</required>
+ <description>
+ The unique id for an artifact produced by the project group, e.g.
+ <code>germonimo-jms</code>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>type</name>
+ <version>4.0.0</version>
+ <description>
+ Other known recognised dependency types are:
+ <code>ejb</code> and
+ <code>plugin</code>.
+ </description>
+ <type>String</type>
+ <defaultValue>jar</defaultValue>
+ </field>
+ <!-- @todo this doesn't consider forced-version overrides, and do we need the version to override? -->
+ <field>
+ <name>version</name>
+ <version>4.0.0</version>
+ <required>true</required>
+ <description>
+ The version of the dependency., e.g.
+ <code>3.2.1</code>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>file</name>
+ <version>4.0.0</version>
+ <required>true</required>
+ <description>
+ The filename of the dependency that will be used to override the one from the repository, e.g.
+ <code>lib/non-distributable-code-1.3.jar</code>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class>
<superClass>Contributor</superClass>
<name>Developer</name>
<version>3.0.0+</version>
@@ -858,10 +989,29 @@
<type>String</type>
</field>
<field>
+ <name>post</name>
+ <version>4.0.0</version>
+ <description>
+ The email address or link that can be used to post to
+ the mailing list. If this is an email address, a
+ <code>mailto:</code> link will automatically be created
+ when the documentation is created.
+ </description>
+ <type>String</type>
+ </field>
+ <field>
<name>archive</name>
<version>3.0.0+</version>
<description>The link to a URL where you can browse the archive.</description>
<type>String</type>
+ <comment>This should probably be removed from 4.0.0 before alpha-1</comment>
+ </field>
+ <field>
+ <name>archives</name>
+ <version>4.0.0</version>
+ <description>The link to a URL where you can browse the archive.</description>
+ <type>java.util.List</type>
+ <defaultValue>new ArrayList()</defaultValue>
</field>
</fields>
<comment>
@@ -943,6 +1093,7 @@
<codeSegments>
<codeSegment>
<version>3.0.0+</version>
+ <!-- @todo: should these be built somewhere so they are only created once, and can be modified? -->
<code>
public List getDefaultExcludes()
{
@@ -1067,6 +1218,13 @@
<description>The URL to the project's browsable CVS repository.</description>
<type>String</type>
</field>
+ <field>
+ <name>branches</name>
+ <version>4.0.0</version>
+ <description>The SCM branches that are currently active for the project. These should only be those forked from the current branch or trunk that are intended to be used.</description>
+ <type>java.util.List</type>
+ <defaultValue>new ArrayList()</defaultValue>
+ </field>
</fields>
</class>
<class>
@@ -1311,5 +1469,58 @@
<fields></fields>
</class>
+ <!-- @todo should modello take a parameter/code segment that will forbid the
+ specification of this in a project other than the user pom? -->
+ <class>
+ <name>Local</name>
+ <version>4.0.0</version>
+ <description>
+ Local contains the information that is specific to the user's
+ local environment. This would only be expected in a user or site pom,
+ not a project POM.
+ </description>
+ <fields>
+ <!-- @todo should local repository actually be part of the <repositories/> element, or be of repository type? -->
+ <field>
+ <name>repository</name>
+ <version>4.0.0</version>
+ <description>
+ The local repository that contains downloaded artifacts.
+ </description>
+ <type>String</type>
+ <!-- @todo systemProperty tag (maven.repo.local value) should be supported by modello -->
+ </field>
+ <field>
+ <name>online</name>
+ <version>4.0.0</version>
+ <description>
+ Whether to run the build online. If not, no remote repositories are consulted for plugins or dependencies
+ and this configuration may be used by other plugins requiring online access.
+ </description>
+ <type>String</type>
+ <defaultValue>true</defaultValue>
+ <!-- @todo systemProperty tag (maven.online value) should be supported by modello -->
+ </field>
+ </fields>
+ <!-- @todo primitive types should be supported natively -->
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0</version>
+ <code>
+ public boolean isOnline()
+ {
+ // Only the value false is offline - anything else is online
+ return !"false".equals( online );
+ }
+
+ public void setOnline( boolean online )
+ {
+ this.online = ( online ? "true" : "false" );
+ }
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
</classes>
</model>
+
1.13 +2 -1 maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java
Index: SurefirePlugin.java
===================================================================
RCS file: /home/cvs/maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test/SurefirePlugin.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- SurefirePlugin.java 27 Jun 2004 13:24:13 -0000 1.12
+++ SurefirePlugin.java 2 Sep 2004 12:34:19 -0000 1.13
@@ -108,6 +108,7 @@
surefireBooter.addBattery( "org.codehaus.surefire.battery.DirectoryBattery", new Object[]{basedir, includes, excludes} );
+ // TODO: there should be a better way to construct a classpath
surefireBooter.addClassPathUrl( new File( mavenRepoLocal, "junit/jars/junit-3.8.1.jar" ).getPath() );
surefireBooter.addClassPathUrl( new File( mavenRepoLocal, "surefire/jars/surefire-1.1.jar" ).getPath() );
building m2 - removal of maven.properties
Posted by Brett Porter <br...@apache.org>.
To those who are now trying to build m2 now, you must specify ~/.m2/pom.xml. For
now that is hardcoded - I think it will probably end up being something other
than pom.xml.
It primarily defines the local repository, but will override any other pom
settings (eg remote repos).
<project>
<local>
<repository>d:/home/brett/repo-m2</repository>
</local>
</project>
There are a couple of things I missed:
- classworlds.conf hasn't been changed, so maven.home must be ~/m2 for now (the
default), or maven.properties must be retained.
- I just remembered I forgot to put back general properties, so mojo stuff like
#maven.foo.bar will not work. The rest continue to exist (eg #project.*,
#maven.repo.local, ...). System properties should work? Sorry about that. There
is already a <properties> element in the model, although this might change to be
part of <plugins/> eventually.
- jar overrides haven't been implemented again just yet.
I'll try and get these sorted out in short order. Let me know if there are any
issues.
Cheers,
Brett
Quoting brett@apache.org:
> brett 2004/09/02 05:34:19
>
> Modified: . ci.sh m2-bootstrap-all.sh pom.xml
> maven-artifact/src/test/java/org/apache/maven/artifact
> ArtifactComponentTestCase.java
Re: cvs commit: maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test SurefirePlugin.java
Posted by Emmanuel Venisse <em...@venisse.net>.
----- Original Message -----
From: "Brett Porter" <br...@apache.org>
To: "Maven 2 Developers List" <m2...@maven.apache.org>
Sent: Thursday, September 02, 2004 3:40 PM
Subject: Re: cvs commit:
maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apach
e/maven/test SurefirePlugin.java
> Quoting Emmanuel Venisse <em...@venisse.net>:
>
> > [...]
> >
> > > +<!-- @todo this will not current parse. We want to have a
repository
> > element inside here, but it expects a PluginRepository class. Need a way
for
> > modello to specify the list tag -->
> >
> > What do you want exactly?
>
> Currently, ibiblio is hard coded as the only plugin repository. I wanted
to add
> these as a separate list, and thought it would be:
>
> <pluginRepositories>
> <respository>...
>
> This should reuse the Repository class as its identical. I'm not sure if
this is
> the best way though - maybe we should just add a flag to the repositories
list
> to indicate if it is for artifacts or for plugins (or make them the same:
jason
> had a reason they should be different though).
No problem, we'll can do it with some attribute in the mdo.
The best syntax wouldbe :
<pluginRepositories>
<pluginRepository>... => that use Repository
>
> > Yes it's implemented in the new modello, but we can't use it for the
moment.
>
> No problem, just making sure it was noted :)
>
> > > + // TODO: there should be a better way to construct a
classpath
> > > surefireBooter.addClassPathUrl( new File( mavenRepoLocal,
> > "junit/jars/junit-3.8.1.jar" ).getPath() );
> >
> > Do you have an idea?
>
> this just felt a little too hard coded. I was thinking more of something
like:
> surefireBooter.addClassPathUrl(
> plugin.getDependency("junit:junit:3.8.1").getLocalRepositoryFile() );
> (obviously very rough, but you get the idea)
>
> I was just marking up things I noticed, and will cull them back when I get
IDEA
> fired up later on.
>
> - Brett
>
>
>
Re: cvs commit: maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test SurefirePlugin.java
Posted by Brett Porter <br...@apache.org>.
Quoting Emmanuel Venisse <em...@venisse.net>:
> [...]
>
> > +<!-- @todo this will not current parse. We want to have a repository
> element inside here, but it expects a PluginRepository class. Need a way for
> modello to specify the list tag -->
>
> What do you want exactly?
Currently, ibiblio is hard coded as the only plugin repository. I wanted to add
these as a separate list, and thought it would be:
<pluginRepositories>
<respository>...
This should reuse the Repository class as its identical. I'm not sure if this is
the best way though - maybe we should just add a flag to the repositories list
to indicate if it is for artifacts or for plugins (or make them the same: jason
had a reason they should be different though).
> Yes it's implemented in the new modello, but we can't use it for the moment.
No problem, just making sure it was noted :)
> > + // TODO: there should be a better way to construct a classpath
> > surefireBooter.addClassPathUrl( new File( mavenRepoLocal,
> "junit/jars/junit-3.8.1.jar" ).getPath() );
>
> Do you have an idea?
this just felt a little too hard coded. I was thinking more of something like:
surefireBooter.addClassPathUrl(
plugin.getDependency("junit:junit:3.8.1").getLocalRepositoryFile() );
(obviously very rough, but you get the idea)
I was just marking up things I noticed, and will cull them back when I get IDEA
fired up later on.
- Brett
Re: cvs commit: maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apache/maven/test SurefirePlugin.java
Posted by Emmanuel Venisse <em...@venisse.net>.
[...]
> +<!-- @todo this will not current parse. We want to have a repository
element inside here, but it expects a PluginRepository class. Need a way for
modello to specify the list tag -->
What do you want exactly?
> +<!--
> + <field>
> + <name>pluginRepositories</name>
> + <version>4.0.0</version>
> + <description>The lists of the remote repositories for
discovering plugins</description>
> + <type>java.util.List</type>
> + <defaultValue>new ArrayList()</defaultValue>
> + <comment>This may be removed or relocated in the near future.
It is undecided whether plugins really need a remote repository set of their
own.</comment>
> + </field>
> +-->
[...]
> <name>preGoals</name>
> <version>4.0.0</version>
> <description>Set of decorator(s) injected before the target
goal(s).</description>
> @@ -340,6 +382,7 @@
> </field>
> </fields>
> <!-- We need this because we can't use package as a field
name. -->
> + <!-- @todo this means it is undocumented. Should we instead
provide an optional field name so package can be mapped to the field
packageName? --
Yes it's implemented in the new modello, but we can't use it for the moment.
>
> <codeSegments>
> <codeSegment>
> <version>3.0.0+</version>
> @@ -404,9 +447,10 @@
> </codeSegment>
> </codeSegments>
> </class>
> + <!-- @todo: is any of this too CVS specific? Investigate other
SCMs -->
No, all scms have branches.
> <class>
> <name>Branch</name>
> - <version>3.0.0</version>
> + <version>3.0.0+</version>
> <description>
> This element describes each of the branches of the
> project. Each branch is described by a
> @@ -416,7 +460,8 @@
> <fields>
> <field>
> <name>tag</name>
> - <version>3.0.0</version>
> + <version>3.0.0+</version>
> + <required>true</required>
> <description>
> The branch tag in the version control system
> (e.g. cvs) used by the project for the source
> @@ -425,6 +470,24 @@
> </description>
> <type>String</type>
> </field>
> + <field>
> + <name>description</name>
> + <version>4.0.0</version>
> + <description>
> + A description of the branch and its strategy.
> + </description>
> + <type>String</type>
> + </field>
> + <field>
> + <name>lastMergeTag</name>
> + <version>4.0.0</version>
> + <description>
> + This is the tag in the version control system that was last
used
> + to merge from the branch to the current codebase. Future
merges
> + should merge only the changes from this tag to the next.
> + </description>
> + <type>String</type>
> + </field>
> </fields>
> </class>
> <class>
[...]
> 1.13 +2 -1
maven-components/maven-plugins/maven-surefire-plugin/src/main/java/org/apach
e/maven/test/SurefirePlugin.java
>
> Index: SurefirePlugin.java
> ===================================================================
> RCS file:
/home/cvs/maven-components/maven-plugins/maven-surefire-plugin/src/main/java
/org/apache/maven/test/SurefirePlugin.java,v
> retrieving revision 1.12
> retrieving revision 1.13
> diff -u -r1.12 -r1.13
> --- SurefirePlugin.java 27 Jun 2004 13:24:13 -0000 1.12
> +++ SurefirePlugin.java 2 Sep 2004 12:34:19 -0000 1.13
> @@ -108,6 +108,7 @@
>
> surefireBooter.addBattery(
"org.codehaus.surefire.battery.DirectoryBattery", new Object[]{basedir,
includes, excludes} );
>
> + // TODO: there should be a better way to construct a classpath
> surefireBooter.addClassPathUrl( new File( mavenRepoLocal,
"junit/jars/junit-3.8.1.jar" ).getPath() );
Do you have an idea?
Emmanuel