mirror of https://github.com/apache/maven.git
fix bootstrap on Windows
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@345178 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3c5f84b6b6
commit
e30e6ca949
|
@ -126,7 +126,11 @@ set BUILD_ARGS=%MAVEN_CMD_LINE_ARGS% --build-plugins --plugins-directory=%PLUGIN
|
|||
:doBuild
|
||||
|
||||
REM TODO: get rid of M2_HOME once integration tests are in here
|
||||
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -jar bootstrap\bootstrap-installer\target\bootstrap-installer.jar --prefix=%M2_HOME%\.. %BUILD_ARGS%
|
||||
set PREFIX=%M2_HOME%\..
|
||||
set OLD_M2_HOME=%M2_HOME%
|
||||
set M2_HOME=
|
||||
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -jar bootstrap\bootstrap-installer\target\bootstrap-installer.jar --prefix=%PREFIX% %BUILD_ARGS%
|
||||
set M2_HOME=%OLD_M2_HOME%
|
||||
|
||||
REM TODO: should we be going back to the mini now that we have the real thing?
|
||||
cd maven-core-it-verifier
|
||||
|
|
28
bootstrap.sh
28
bootstrap.sh
|
@ -7,16 +7,16 @@ ORIG_ARGS=$ARGS
|
|||
cd bootstrap/bootstrap-mini
|
||||
./build
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
java -jar target/bootstrap-mini.jar install $ARGS
|
||||
java $MAVEN_OPTS -jar bootstrap-mini.jar install $ARGS
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
)
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
|
||||
BOOTSTRAP_JAR=bootstrap-mini/target/bootstrap-mini.jar
|
||||
BOOTSTRAP_JAR=bootstrap-mini/bootstrap-mini.jar
|
||||
|
||||
(
|
||||
cd bootstrap/bootstrap-installer
|
||||
java -jar ../$BOOTSTRAP_JAR package $ARGS
|
||||
java $MAVEN_OPTS -jar ../$BOOTSTRAP_JAR package $ARGS
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
)
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
|
@ -27,15 +27,31 @@ if [ -d $PLUGINS_DIR ]; then
|
|||
fi
|
||||
|
||||
# TODO: get rid of M2_HOME once integration tests are in here
|
||||
java -jar bootstrap/bootstrap-installer/target/bootstrap-installer.jar --prefix=`dirname $M2_HOME` $ARGS
|
||||
PREFIX=`dirname $M2_HOME`
|
||||
|
||||
# OS specific support. $var _must_ be set to either true or false.
|
||||
cygwin=false;
|
||||
case "`uname`" in
|
||||
CYGWIN*) cygwin=true ;;
|
||||
esac
|
||||
|
||||
if [ "$cygwin" = "true" ]; then
|
||||
PREFIX=`cygpath -w $PREFIX`
|
||||
JAVA_HOME=`cygpath -w $JAVA_HOME`
|
||||
fi
|
||||
|
||||
OLD_M2_HOME=$M2_HOME
|
||||
unset M2_HOME
|
||||
java $MAVEN_OPTS -jar bootstrap/bootstrap-installer/target/bootstrap-installer.jar --prefix=$PREFIX $ARGS
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
M2_HOME=$OLD_M2_HOME
|
||||
|
||||
ARGS=$ORIG_ARGS
|
||||
|
||||
(
|
||||
# TODO: should w ebe going back to the mini now that we have the real thing?
|
||||
cd maven-core-it-verifier
|
||||
java -jar ../bootstrap/$BOOTSTRAP_JAR package $ARGS
|
||||
java $MAVEN_OPTS -jar ../bootstrap/$BOOTSTRAP_JAR package $ARGS
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
)
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
|
@ -44,7 +60,7 @@ ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
|||
cd ./maven-core-it
|
||||
echo
|
||||
echo "Running maven-core integration tests ..."
|
||||
echo
|
||||
echo
|
||||
./maven-core-it.sh $ARGS
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
)
|
||||
|
|
|
@ -186,54 +186,6 @@ public class BootstrapInstaller
|
|||
}
|
||||
}
|
||||
|
||||
private Properties getEnvVars()
|
||||
throws Exception
|
||||
{
|
||||
// TODO : put this method in Commandline class
|
||||
Process p = null;
|
||||
|
||||
Properties envVars = new Properties();
|
||||
|
||||
Runtime r = Runtime.getRuntime();
|
||||
|
||||
String os = System.getProperty( "os.name" ).toLowerCase();
|
||||
|
||||
//If this is windows set the shell to command.com or cmd.exe with correct arguments.
|
||||
if ( os.indexOf( "Windows" ) != -1 )
|
||||
{
|
||||
if (os.indexOf("95") != -1 || os.indexOf("98") != -1 || os.indexOf("Me") != -1)
|
||||
{
|
||||
p = r.exec( "command.com /c set" );
|
||||
}
|
||||
else
|
||||
{
|
||||
p = r.exec( "cmd.exe /c set" );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
p = r.exec( "env" );
|
||||
}
|
||||
|
||||
BufferedReader br = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
|
||||
|
||||
String line;
|
||||
|
||||
while( ( line = br.readLine() ) != null )
|
||||
{
|
||||
int idx = line.indexOf( '=' );
|
||||
|
||||
String key = line.substring( 0, idx );
|
||||
|
||||
String value = line.substring( idx + 1 );
|
||||
|
||||
envVars.setProperty( key, value );
|
||||
// System.out.println( key + " = " + value );
|
||||
}
|
||||
|
||||
return envVars;
|
||||
}
|
||||
|
||||
private void runMaven( File installation, File basedir, String[] args )
|
||||
throws Exception, InterruptedException
|
||||
{
|
||||
|
@ -241,22 +193,6 @@ public class BootstrapInstaller
|
|||
|
||||
cli.setExecutable( new File( installation, "bin/mvn" ).getAbsolutePath() );
|
||||
|
||||
// we need to add actual environment variable, because they don't added in commandline when
|
||||
//we add new environment variables
|
||||
Properties envVars = getEnvVars();
|
||||
|
||||
for ( Iterator i = envVars.keySet().iterator(); i.hasNext(); )
|
||||
{
|
||||
String key = (String) i.next();
|
||||
|
||||
cli.addEnvironment( key, envVars.getProperty( key ) );
|
||||
}
|
||||
|
||||
// TODO: should we just remove this from the equation?
|
||||
cli.addEnvironment( "M2_HOME", installation.getAbsolutePath() );
|
||||
// No env is passed through
|
||||
cli.addEnvironment( "JAVA_HOME", System.getProperty( "java.home" ) );
|
||||
|
||||
cli.setWorkingDirectory( basedir.getAbsolutePath() );
|
||||
|
||||
cli.createArgument().setValue( "-e" );
|
||||
|
@ -311,18 +247,19 @@ public class BootstrapInstaller
|
|||
{
|
||||
Dependency dep = (Dependency) i.next();
|
||||
|
||||
File artifactFile = bootstrapper.getArtifactFile( dep );
|
||||
if ( dep.getArtifactId().equals( "classworlds" ) )
|
||||
{
|
||||
FileUtils.copyFileToDirectory( bootstrapper.getArtifactFile( dep ), bootDirectory );
|
||||
FileUtils.copyFileToDirectory( artifactFile, bootDirectory );
|
||||
}
|
||||
else if ( dep.getArtifactId().equals( "plexus-container-default" ) ||
|
||||
dep.getArtifactId().equals( "plexus-utils" ) )
|
||||
{
|
||||
FileUtils.copyFileToDirectory( bootstrapper.getArtifactFile( dep ), coreDirectory );
|
||||
FileUtils.copyFileToDirectory( artifactFile, coreDirectory );
|
||||
}
|
||||
else
|
||||
{
|
||||
FileUtils.copyFileToDirectory( bootstrapper.getArtifactFile( dep ), libDirectory );
|
||||
FileUtils.copyFileToDirectory( artifactFile, libDirectory );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,12 +4,12 @@ buildDir=target
|
|||
classesDir=${buildDir}/classes
|
||||
srcDir=src/main/java
|
||||
|
||||
rm -rf ${buildDir} > /dev/null 2>&1
|
||||
rm -rf bootstrap-mini.jar ${buildDir} > /dev/null 2>&1
|
||||
|
||||
mkdir -p ${classesDir}
|
||||
|
||||
"$JAVA_HOME/bin/javac" -g -d ${classesDir} `find ${srcDir} -name '*.java'`
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
|
||||
( cd ${classesDir} ; "$JAVA_HOME/bin/jar" -cfm ../bootstrap-mini.jar ../../src/main/resources/META-INF/MANIFEST.MF * )
|
||||
( cd ${classesDir} ; "$JAVA_HOME/bin/jar" -cfm ../../bootstrap-mini.jar ../../src/main/resources/META-INF/MANIFEST.MF * )
|
||||
ret=$?; if [ $ret != 0 ]; then exit $ret; fi
|
||||
|
|
|
@ -10,10 +10,12 @@ if exist %buildDir% rmdir /S/Q %buildDir%
|
|||
mkdir %buildDir%
|
||||
mkdir %classesDir%
|
||||
|
||||
del bootstrap-mini.jar
|
||||
|
||||
dir /B /s %srcDir%\*.java >sources
|
||||
"%JAVA_HOME%\bin\javac" -d %classesDir% @sources
|
||||
del /F/Q sources
|
||||
|
||||
cd %classesDir%
|
||||
"%JAVA_HOME%\bin\jar" -cfm ..\bootstrap-mini.jar ..\..\src\main\resources\META-INF\MANIFEST.MF *.*
|
||||
"%JAVA_HOME%\bin\jar" -cfm ..\..\bootstrap-mini.jar ..\..\src\main\resources\META-INF\MANIFEST.MF *.*
|
||||
cd ..\..
|
||||
|
|
|
@ -734,7 +734,11 @@ public class Bootstrap
|
|||
throw new FileNotFoundException( "Missing dependency: " + dependency + msg );
|
||||
}
|
||||
|
||||
cl.addURL( f.toURL() );
|
||||
// Classes won't be unloaded, but we might delete the JAR, so they need to be copied to a temporary location
|
||||
File newFile = File.createTempFile( "maven-bootstrap", "dep" );
|
||||
newFile.deleteOnExit();
|
||||
FileUtils.copyFile( f, newFile );
|
||||
cl.addURL( newFile.toURL() );
|
||||
}
|
||||
|
||||
return cl;
|
||||
|
|
|
@ -54,14 +54,6 @@ public class Repository
|
|||
this.releases = releases;
|
||||
}
|
||||
|
||||
private File getArtifactFile( String groupId, String artifactId, String version, String type )
|
||||
{
|
||||
Dependency d = new Dependency( groupId, artifactId, version, type, Collections.EMPTY_LIST );
|
||||
|
||||
return getArtifactFile( d );
|
||||
|
||||
}
|
||||
|
||||
public File getArtifactFile( Dependency dependency )
|
||||
{
|
||||
String repositoryPath = getArtifactPath( dependency );
|
||||
|
|
|
@ -20,5 +20,5 @@
|
|||
@REM NOTE: for simplicity, only Windows NT/2000/XP is current supported
|
||||
@REM This also assumes that M2_HOME and JAVA_HOME are set, which are verified in the bootstrap script only
|
||||
|
||||
"%JAVA_HOME%\bin\java.exe" -Dmaven.home="%M2_HOME%" -cp "..\maven-core-it-verifier\target\maven-core-it-verifier-1.0.jar" org.apache.maven.it.Verifier %*
|
||||
"%JAVA_HOME%\bin\java.exe" -Dmaven.home="%M2_HOME%" %MAVEN_OPTS% -cp "..\maven-core-it-verifier\target\maven-core-it-verifier.jar" org.apache.maven.it.Verifier %*
|
||||
|
||||
|
|
Loading…
Reference in New Issue