You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by mc...@apache.org on 2004/05/23 15:42:13 UTC
svn commit: rev 20249 - in avalon/trunk/tools/project/src: main/org/apache/avalon/tools/project main/org/apache/avalon/tools/tasks test/projects/gizmo
Author: mcconnell
Date: Sun May 23 06:42:13 2004
New Revision: 20249
Added:
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/DeliverableTask.java
Modified:
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ProjectTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/InstallTask.java
avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java
avalon/trunk/tools/project/src/test/projects/gizmo/ (props changed)
avalon/trunk/tools/project/src/test/projects/gizmo/build.properties
avalon/trunk/tools/project/src/test/projects/gizmo/build.xml
Log:
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ProjectTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ProjectTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/project/ProjectTask.java Sun May 23 06:42:13 2004
@@ -37,6 +37,7 @@
*/
public class ProjectTask extends Sequential
{
+ private static final String ANT_PROPERTIES = "ant.properties";
private static final String BUILD_PROPERTIES = "build.properties";
private File m_index;
@@ -93,10 +94,9 @@
// make sure that the build.properties file is loaded
//
- Property props = (Property) getProject().createTask( "property" );
- props.setFile( getPropertiesFile() );
- props.init();
- props.execute();
+ readProperties(
+ new File( getProject().getBaseDir(), ANT_PROPERTIES ) );
+ readProperties( getPropertiesFile() );
//
// make sure we have a common defintion available
@@ -259,5 +259,13 @@
{
throw new BuildException( ioe );
}
+ }
+
+ private void readProperties( File file ) throws BuildException
+ {
+ Property props = (Property) getProject().createTask( "property" );
+ props.setFile( file );
+ props.init();
+ props.execute();
}
}
Added: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/DeliverableTask.java
==============================================================================
--- (empty file)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/DeliverableTask.java Sun May 23 06:42:13 2004
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2004 Apache Software Foundation
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ * implied.
+ *
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.avalon.tools.tasks;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.taskdefs.Copy;
+import org.apache.tools.ant.taskdefs.Jar;
+import org.apache.tools.ant.taskdefs.Checksum;
+import org.apache.tools.ant.taskdefs.Execute;
+import org.apache.tools.ant.types.FileSet;
+import org.apache.tools.ant.types.Path;
+
+import org.apache.avalon.tools.home.Home;
+import org.apache.avalon.tools.project.Definition;
+
+/**
+ * Load a goal.
+ *
+ * @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
+ * @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
+ */
+public abstract class DeliverableTask extends HomeTask
+{
+ public static final String DELIVERABLES_KEY = "avalon.target.deliverables";
+ public static final String DELIVERABLES_VALUE = "deliverables";
+
+ public static File getTargetDeliverablesDirectory( Project project )
+ {
+ File target = PrepareTask.getTargetDirectory( project );
+ String deliverables = project.getProperty( DELIVERABLES_KEY );
+ return new File( target, deliverables );
+ }
+
+ public static File getTargetDeliverablesTypeDirectory(
+ Project project, Definition def )
+ {
+ File deliverables = getTargetDeliverablesDirectory( project );
+ return new File( deliverables, def.getInfo().getType() + "s" );
+ }
+
+ public void init() throws BuildException
+ {
+ super.init();
+ setProjectProperty( DELIVERABLES_KEY, DELIVERABLES_VALUE );
+ createDirectory( getTargetDeliverablesTypeDirectory() );
+ }
+
+ protected File getTargetDeliverablesDirectory()
+ {
+ return getTargetDeliverablesDirectory( getProject() );
+ }
+
+ protected File getTargetDeliverablesTypeDirectory()
+ {
+ return getTargetDeliverablesTypeDirectory(
+ getProject(), getDefinition() );
+ }
+
+}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/HomeTask.java Sun May 23 06:42:13 2004
@@ -23,13 +23,16 @@
import org.apache.tools.ant.Task;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Property;
+import org.apache.tools.ant.taskdefs.Delete;
import org.apache.tools.ant.taskdefs.Mkdir;
import org.apache.avalon.tools.home.Home;
import org.apache.avalon.tools.project.Definition;
/**
- * Load a goal.
+ * Abstract task that provides convinience opperations including
+ * access to the current project defintion and the system home
+ * model and repository.
*
* @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
* @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
@@ -46,17 +49,17 @@
m_definition = m_home.getDefinition( key );
}
- public Home getHome()
+ protected Home getHome()
{
return m_home;
}
- public Definition getDefinition()
+ protected Definition getDefinition()
{
return m_definition;
}
- public void setProjectProperty( String key, String value )
+ protected void setProjectProperty( String key, String value )
{
Property props = (Property) getProject().createTask( "property" );
props.setName( key );
@@ -65,11 +68,26 @@
props.execute();
}
- public void createDirectory( File dir )
+ protected void createDirectory( File dir )
{
Mkdir mkdir = (Mkdir) getProject().createTask( "mkdir" );
mkdir.setDir( dir );
mkdir.init();
mkdir.execute();
+ }
+
+ protected void delete( File file )
+ {
+ delete( file, true );
+ }
+
+ protected void delete( File file, boolean verbose )
+ {
+ Delete delete = (Delete) getProject().createTask( "delete" );
+ delete.setFile( file );
+ delete.setVerbose( verbose );
+ delete.setQuiet( true );
+ delete.init();
+ delete.execute();
}
}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/InstallTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/InstallTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/InstallTask.java Sun May 23 06:42:13 2004
@@ -36,36 +36,30 @@
* @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
* @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
*/
-public class InstallTask extends HomeTask
+public class InstallTask extends DeliverableTask
{
public void execute() throws BuildException
{
- String filename = JarTask.getJarFilename( getDefinition() );
- File jar = JarTask.getJarFile( getProject(), getDefinition() );
- if( jar.exists() )
+ File deliverables = getTargetDeliverablesDirectory();
+ if( deliverables.exists() )
{
- install();
+ install( deliverables );
}
}
- private void install()
+ private void install( File deliverables )
{
FileSet fileset = new FileSet();
- fileset.setDir( PrepareTask.getTargetDirectory( getProject() ) );
- String filename = JarTask.getJarFilename( getDefinition() );
- fileset.createInclude().setName( filename );
- fileset.createInclude().setName( filename + "." + JarTask.MD5_EXT );
+ fileset.setDir( deliverables );
+ fileset.createInclude().setName( "**/*" );
File cache = getHome().getRepository().getCacheDirectory();
String group = getDefinition().getInfo().getGroup();
- String type = getDefinition().getInfo().getType();
- File repoGroup = new File( cache, group );
- File repoType = new File( repoGroup, type + "s" );
+ File target = new File( cache, group );
Copy copy = (Copy) getProject().createTask( "copy" );
+ copy.setTodir( target );
copy.addFileset( fileset );
- copy.setTodir( repoType );
-
copy.init();
copy.execute();
}
Modified: avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java
==============================================================================
--- avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java (original)
+++ avalon/trunk/tools/project/src/main/org/apache/avalon/tools/tasks/JarTask.java Sun May 23 06:42:13 2004
@@ -24,8 +24,10 @@
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.Copy;
+import org.apache.tools.ant.taskdefs.Delete;
import org.apache.tools.ant.taskdefs.Jar;
import org.apache.tools.ant.taskdefs.Checksum;
+import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
@@ -38,10 +40,11 @@
* @author <a href="mailto:dev@avalon.apache.org">Avalon Development Team</a>
* @version $Revision: 1.2 $ $Date: 2004/03/17 10:30:09 $
*/
-public class JarTask extends HomeTask
+public class JarTask extends DeliverableTask
{
public static final String MD5_EXT = "md5";
public static final String JAR_EXT = "jar";
+ public static final String ASC_EXT = "asc";
public static String getJarFilename( Definition def )
{
@@ -58,9 +61,9 @@
public static File getJarFile( Project project, Definition def )
{
- File target = PrepareTask.getTargetDirectory( project );
+ File type = getTargetDeliverablesTypeDirectory( project, def );
String filename = getJarFilename( def );
- return new File( target, filename );
+ return new File( type, filename );
}
public void execute() throws BuildException
@@ -70,8 +73,16 @@
File jarFile = getJarFile();
if( classes.exists() )
{
- jar( classes, jarFile );
- checksum( jarFile );
+ try
+ {
+ boolean modified = jar( classes, jarFile );
+ checksum( jarFile, modified );
+ asc( jarFile, modified );
+ }
+ catch( IOException ioe )
+ {
+ throw new BuildException( ioe );
+ }
}
}
@@ -80,21 +91,59 @@
return getJarFile( getProject(), getDefinition() );
}
- private void jar( File classes, File jarFile )
+ private boolean jar( File classes, File jarFile )
{
+ long modified = -1;
+ if( jarFile.exists() )
+ {
+ modified = jarFile.lastModified();
+ }
+
Jar jar = (Jar) getProject().createTask( "jar" );
jar.setDestFile( jarFile );
jar.setBasedir( classes );
+ jar.setIndex( true );
jar.init();
jar.execute();
+
+ return jarFile.lastModified() > modified;
}
- private void checksum( File jarFile )
+ private void checksum( File jar, boolean modified )
{
+ if( modified )
+ {
+ log( "Creating md5 checksum" );
+ }
+
Checksum checksum = (Checksum) getProject().createTask( "checksum" );
- checksum.setFile( jarFile );
+ checksum.setFile( jar );
checksum.setFileext( "." + MD5_EXT );
checksum.init();
checksum.execute();
+ }
+
+ private void asc( File jar, boolean modified ) throws IOException
+ {
+ File md5 = new File( jar.toString() + "." + ASC_EXT );
+ if( modified )
+ {
+ if( md5.exists() )
+ {
+ md5.delete();
+ }
+
+ String gpg = getProject().getProperty( "avalon.gpg.exe" );
+ if( null != gpg )
+ {
+ log( "Creating asc signature" );
+ Execute execute = new Execute();
+ execute.setCommandline(
+ new String[]{ gpg, "-a", "-b", jar.toString() } );
+ execute.setWorkingDirectory( getProject().getBaseDir() );
+ execute.setSpawn( true );
+ execute.execute();
+ }
+ }
}
}
Modified: avalon/trunk/tools/project/src/test/projects/gizmo/build.properties
==============================================================================
--- avalon/trunk/tools/project/src/test/projects/gizmo/build.properties (original)
+++ avalon/trunk/tools/project/src/test/projects/gizmo/build.properties Sun May 23 06:42:13 2004
@@ -1 +1 @@
-#avalon.target = targetx
\ No newline at end of file
+#avalon.target = targetx
Modified: avalon/trunk/tools/project/src/test/projects/gizmo/build.xml
==============================================================================
--- avalon/trunk/tools/project/src/test/projects/gizmo/build.xml (original)
+++ avalon/trunk/tools/project/src/test/projects/gizmo/build.xml Sun May 23 06:42:13 2004
@@ -1,12 +1,17 @@
-<project name="gizmo" default="" basedir="."
+<project name="gizmo" default="install" basedir="."
xmlns:x="antlib:org.apache.avalon.tools">
- <x:project index="../../index.xml">
+ <x:project index="../../index.xml"/>
+
+ <target name="build">
<x:prepare/>
<x:javac/>
<x:jar/>
+ </target>
+
+ <target name="install" depends="build">
<x:install/>
- </x:project>
+ </target>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org