Changeset 7626 for trunk/projects


Ignore:
Timestamp:
02/20/11 00:09:57 (9 years ago)
Author:
curtis
Message:

Ostensibly working version of cppwrap-maven-plugin.

Location:
trunk/projects
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/cppwrap-maven-plugin/pom.xml

    r7622 r7626  
    2929  </licenses> 
    3030 
     31  <properties> 
     32    <maven.version>2.0.9</maven.version> 
     33  </properties> 
     34 
    3135  <dependencies> 
    3236    <dependency> 
     
    3842      <groupId>org.apache.maven</groupId> 
    3943      <artifactId>maven-plugin-api</artifactId> 
    40       <version>2.0</version> 
     44      <version>${maven.version}</version> 
     45    </dependency> 
     46    <dependency> 
     47      <groupId>org.apache.maven</groupId> 
     48      <artifactId>maven-project</artifactId> 
     49      <version>${maven.version}</version> 
    4150    </dependency> 
    4251  </dependencies> 
     
    4958          <archive> 
    5059            <manifest> 
    51               <mainClass>loci.maven.plugin.cppwrap</mainClass> 
    5260              <packageName>loci.maven.plugin.cppwrap</packageName> 
    5361            </manifest> 
  • trunk/projects/cppwrap-maven-plugin/src/main/java/loci/maven/plugin/cppwrap/CppWrapMojo.java

    r7625 r7626  
    3535package loci.maven.plugin.cppwrap; 
    3636 
     37import java.io.File; 
     38import java.io.IOException; 
     39import java.util.ArrayList; 
     40import java.util.List; 
     41 
     42import loci.jar2lib.Jar2Lib; 
     43import loci.jar2lib.VelocityException; 
     44 
    3745import org.apache.maven.plugin.AbstractMojo; 
    3846import org.apache.maven.plugin.MojoExecutionException; 
     47import org.apache.maven.project.MavenProject; 
    3948 
    4049/** 
     
    4352 * @author Curtis Rueden 
    4453 * 
    45  * @goal cppwrap 
     54 * @goal wrap 
    4655 */ 
    4756public class CppWrapMojo extends AbstractMojo { 
    4857 
    49         private static final String CPPWRAP_DIR = "src/main/cppwrap/"; 
     58        /** 
     59         * The Maven project to wrap. 
     60         * 
     61         * @parameter expression="${project}" 
     62         * @required 
     63         * @readonly 
     64         */ 
     65        private MavenProject project; 
    5066 
    5167        /** 
     
    5672         *   default-value="src/main/cppwrap/conflicts.txt" 
    5773         */ 
    58         private String conflictsFile = CPPWRAP_DIR + "conflicts.txt"; 
     74        private File conflictsFile; 
    5975 
    6076        /** 
    6177         * Path to header file to prepend to each C++ source file. 
    6278         * 
    63          * @parameter expression="${cppwrap.conflictsFile}" 
    64          *   default-value="src/main/cppwrap/conflicts.txt" 
     79         * @parameter expression="${cppwrap.headerFile}" 
     80         *   default-value="src/main/cppwrap/header.txt" 
    6581         */ 
    66         private String headerFile = CPPWRAP_DIR + "header.txt"; 
     82        private File headerFile; 
    6783 
    6884        /** 
    69          * TODO 
     85         * Path to output folder for C++ project. 
     86         * 
     87         * @parameter expression="${cppwrap.outputDir}" 
     88         *   default-value="target/cppwrap" 
    7089         */ 
     90        private File outputDir; 
     91 
     92        @Override 
    7193        public void execute() throws MojoExecutionException { 
    7294                getLog().info("Hello, world."); 
    73                 // TODO throw MojoExecutionException to cause BUILD ERROR message 
    74                 // TODO throw MojoFailureException to cause BUILD FAILURE message 
     95                getLog().info("conflictsFile = " + conflictsFile); 
     96                getLog().info("headerFile = " + headerFile); 
     97                getLog().info("project = " + project); 
     98                getLog().info("dependencies:"); 
     99                final List<?> list = project.getDependencies(); 
     100                for (Object item : list) { 
     101                        getLog().info("\t" + item); 
     102                } 
     103 
     104                final String projectId = 
     105                        project.getArtifactId().replaceAll("[^\\w\\-]", "_"); 
     106                final String projectName = project.getName(); 
     107                final List<String> jarPaths = new ArrayList<String>(); 
     108                jarPaths.add(project.getArtifact().getFile().getPath()); 
     109                final String conflictsPath = conflictsFile.exists() ? 
     110                        conflictsFile.getPath() : null; 
     111                final String headerPath = headerFile.exists() ? 
     112                        headerFile.getPath() : null; 
     113                final String outputPath = outputDir.getPath(); 
     114 
     115                final Jar2Lib jar2lib = new Jar2Lib() { 
     116                        @Override 
     117                        protected void log(String message) { 
     118                                getLog().info(message); 
     119                        } 
     120                }; 
     121                jar2lib.setProjectId(projectId); 
     122                jar2lib.setProjectName(projectName); 
     123                jar2lib.setLibraryPaths(jarPaths); 
     124                jar2lib.setConflictsPath(conflictsPath); 
     125                jar2lib.setHeaderPath(headerPath); 
     126                jar2lib.setOutputPath(outputPath); 
     127                try { 
     128                        jar2lib.execute(); 
     129                } 
     130                catch (IOException e) { 
     131                        throw new MojoExecutionException("Error invoking jar2lib", e); 
     132                } 
     133                catch (VelocityException e) { 
     134                        throw new MojoExecutionException("Error invoking jar2lib", e); 
     135                } 
    75136        } 
    76137 
  • trunk/projects/jar2lib/src/main/java/loci/jar2lib/Jar2Lib.java

    r6926 r7626  
    176176  public void checkInputs() { 
    177177    // check project ID 
    178     if (projectId == null || !projectId.matches("^(\\w)+$")) { 
     178    if (projectId == null || !projectId.matches("^(\\w)([\\w\\-])*$")) { 
    179179      throw new IllegalStateException("Invalid project ID: " + projectId); 
    180180    } 
     
    313313  // -- Helper methods -- 
    314314 
    315   private void log(String message) { 
     315  protected void log(String message) { 
    316316    // TODO - improving logging mechanism? 
    317317    System.out.println(message); 
    318318  } 
    319319 
    320   private void die(String message) { 
     320  protected void die(String message) { 
    321321    throw new IllegalArgumentException(message); 
    322322  } 
     
    329329  } 
    330330 
    331   /** Builds a classpath corresponding to the given list of JAR files. */ 
    332   private String classpath(List<String> jarPaths) 
    333     throws UnsupportedEncodingException 
    334   { 
    335     final StringBuilder sb = new StringBuilder(); 
    336     final String jrePath = findRuntime(); 
    337     sb.append(jrePath); 
    338     for (String jarPath : jarPaths) { 
    339       sb.append(File.pathSeparator); 
    340       sb.append(jarPath); 
    341     } 
    342     final String classPath = System.getProperty("java.class.path"); 
    343     if (classPath != null && !classPath.equals("")) { 
    344       sb.append(File.pathSeparator); 
    345       sb.append(classPath); 
    346     } 
    347     final String bootClassPath = System.getProperty("sun.boot.class.path"); 
    348     if (bootClassPath != null && !bootClassPath.equals("")) { 
    349       sb.append(File.pathSeparator); 
    350       sb.append(bootClassPath); 
    351     } 
    352     return sb.toString(); 
    353   } 
    354  
    355   /** Locates the JAR file containing this JVM's classes. */ 
    356   private String findRuntime() throws UnsupportedEncodingException { 
    357     return findEnclosingJar(Object.class); 
    358   } 
    359  
    360331  /** Scans the enclosing JAR file for all resources beneath the given path. */ 
    361332  private List<String> findResources(String resourceDir) throws IOException { 
    362333    final List<String> resources = new ArrayList<String>(); 
    363     final String jarPath = findEnclosingJar(getClass()); 
     334    final String jarPath = findEnclosingJar(Jar2Lib.class); 
    364335    final JarFile jarFile = new JarFile(jarPath); 
    365336    final Enumeration<JarEntry> jarEntries = jarFile.entries(); 
     
    389360    else { 
    390361      // resource is a file 
    391       final InputStream in = getClass().getResourceAsStream("/" + resource); 
     362      final InputStream in = Jar2Lib.class.getResourceAsStream("/" + resource); 
    392363      final OutputStream out = new FileOutputStream(outputFile); 
    393364      final byte[] buf = new byte[512 * 1024]; // 512K buffer 
     
    427398  } 
    428399 
     400  /** Builds a classpath corresponding to the given list of JAR files. */ 
     401  private static String classpath(List<String> jarPaths) 
     402    throws UnsupportedEncodingException 
     403  { 
     404    final StringBuilder sb = new StringBuilder(); 
     405    final String jrePath = findRuntime(); 
     406    sb.append(jrePath); 
     407    for (String jarPath : jarPaths) { 
     408      sb.append(File.pathSeparator); 
     409      sb.append(jarPath); 
     410    } 
     411    final String classPath = System.getProperty("java.class.path"); 
     412    if (classPath != null && !classPath.equals("")) { 
     413      sb.append(File.pathSeparator); 
     414      sb.append(classPath); 
     415    } 
     416    final String bootClassPath = System.getProperty("sun.boot.class.path"); 
     417    if (bootClassPath != null && !bootClassPath.equals("")) { 
     418      sb.append(File.pathSeparator); 
     419      sb.append(bootClassPath); 
     420    } 
     421    return sb.toString(); 
     422  } 
     423 
     424  /** Locates the JAR file containing this JVM's classes. */ 
     425  private static String findRuntime() throws UnsupportedEncodingException { 
     426    return findEnclosingJar(Object.class); 
     427  } 
     428 
    429429} 
  • trunk/projects/jar2lib/src/main/resources/jace-header.vm

    r6806 r7626  
    66 * 
    77 * THIS IS AUTOMATICALLY GENERATED CODE.  DO NOT MODIFY. 
    8  * Created by $user via JaceHeaderAutogen on $timestamp 
     8 * Created by $user via Jar2Lib on $timestamp 
    99 * 
    1010 *----------------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.