Changeset 7630 for trunk/projects


Ignore:
Timestamp:
02/22/11 14:10:59 (9 years ago)
Author:
curtis
Message:

Add ability to specify additional JARs to wrap.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/projects/cppwrap-maven-plugin/src/main/java/loci/maven/plugin/cppwrap/CppWrapMojo.java

    r7629 r7630  
    6969 
    7070        /** 
     71         * Additional dependencies to wrap as part of the C++ project. 
     72         * 
     73         * For example, if a project human:body:jar:1.0 depends on projects 
     74         * human:head:jar:1.0, human:arms:jar:1.0 and human:legs:jar:1.0, 
     75         * and you wish to wrap human and head, but not arms or legs, 
     76         * you could specify human:head:jar:1.0 as an extra artifact here. 
     77         * 
     78         * @parameter expression="${cppwrap.libraries}" 
     79         */ 
     80        private String[] libraries; 
     81 
     82        /** 
    7183         * Path to conflicts list of Java constants to rename, 
    7284         * to avoid name collisions. 
     
    137149                final File projectArtifact = project.getArtifact().getFile(); 
    138150                if (projectArtifact == null || !projectArtifact.exists()) { 
    139                         throw new MojoExecutionException("Must execute package target first."); 
     151                        throw new MojoExecutionException( 
     152                                "Must execute package target first (e.g., mvn package cppwrap:wrap)."); 
    140153                } 
    141154                jars.add(projectArtifact.getPath()); 
    142155 
     156                // add explicitly enumerated dependencies 
     157                if (libraries != null) { 
     158                        @SuppressWarnings("unchecked") 
     159                        final List<Artifact> artifacts = project.getRuntimeArtifacts(); 
     160 
     161                        // TODO - avoid M*N complexity here 
     162                        for (final String library : libraries) { 
     163                                boolean foundArtifact = false; 
     164                                for (final Artifact artifact : artifacts) { 
     165                                        final String artifactId = artifact.getId(); 
     166                                        if (library.equals(artifactId)) { 
     167                                                final File artifactFile = artifact.getFile(); 
     168                                                if (!artifactFile.exists()) { 
     169                                                        throw new MojoExecutionException("Artifact not found: " + 
     170                                                                artifactFile); 
     171                                                } 
     172                                                jars.add(artifactFile.getPath()); 
     173                                                foundArtifact = true; 
     174                                                break; 
     175                                        } 
     176                                } 
     177                                if (!foundArtifact) { 
     178                                        throw new MojoExecutionException("Invalid library dependency: " + 
     179                                                library); 
     180                                } 
     181                        } 
     182                } 
    143183                return jars; 
    144184        } 
     
    148188 
    149189                // add project runtime dependencies 
     190                @SuppressWarnings("unchecked") 
    150191                final List<Artifact> artifacts = project.getRuntimeArtifacts(); 
    151192                for (final Artifact classPathElement : artifacts) { 
Note: See TracChangeset for help on using the changeset viewer.