diff options
author | Mark Donszelmann <Mark.Donszelmann@gmail.com> | 2009-10-01 14:33:24 +0200 |
---|---|---|
committer | Mark Donszelmann <Mark.Donszelmann@gmail.com> | 2009-10-01 14:33:24 +0200 |
commit | 846700d44b67b22835b57a1c04f17043db8323a3 (patch) | |
tree | a253ecd4ada6f80dbcd08177035cfa71ade9b670 /src/main/java/org/apache/maven/plugin/nar/Lib.java | |
parent | 0a8746644d70eb8b1cfb615c27155c19e09f46d3 (diff) | |
download | maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.tar.gz maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.tar.bz2 maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.tar.xz maven-nar-plugin-846700d44b67b22835b57a1c04f17043db8323a3.zip |
Moved files in from freehep-nar-plugin version 2.0-alpha-11-SNAPSHOT
Diffstat (limited to 'src/main/java/org/apache/maven/plugin/nar/Lib.java')
-rw-r--r-- | src/main/java/org/apache/maven/plugin/nar/Lib.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/main/java/org/apache/maven/plugin/nar/Lib.java b/src/main/java/org/apache/maven/plugin/nar/Lib.java new file mode 100644 index 0000000..6f47527 --- /dev/null +++ b/src/main/java/org/apache/maven/plugin/nar/Lib.java @@ -0,0 +1,97 @@ +// Copyright FreeHEP, 2005. +package org.freehep.maven.nar; + +import java.io.File; +import java.util.Iterator; +import java.util.List; + +import net.sf.antcontrib.cpptasks.CUtil; +import net.sf.antcontrib.cpptasks.LinkerDef; +import net.sf.antcontrib.cpptasks.types.LibrarySet; +import net.sf.antcontrib.cpptasks.types.LibraryTypeEnum; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.tools.ant.Project; + +/** + * Keeps info on a library + * + * @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark Donszelmann</a> + * @version $Id: plugin/src/main/java/org/freehep/maven/nar/Lib.java eda4d0bbde3d 2007/07/03 16:52:10 duns $ + */ +public class Lib { + + /** + * Name of the library, or a dependency groupId:artifactId if this library contains sublibraries + * + * @parameter expression="" + * @required + */ + private String name; + + /** + * Type of linking for this library + * + * @parameter expression="" default-value="shared" + * @required + */ + private String type = Library.SHARED; + + /** + * Location for this library + * + * @parameter expression="" + * @required + */ + private File directory; + + /** + * Sub libraries for this library + * + * @parameter expression="" + */ + private List/*<Lib>*/ libs; + + public void addLibSet(AbstractDependencyMojo mojo, LinkerDef linker, Project antProject) throws MojoFailureException, MojoExecutionException { + addLibSet(mojo, linker, antProject, name, directory); + } + + private void addLibSet(AbstractDependencyMojo mojo, LinkerDef linker, Project antProject, String name, File dir) throws MojoFailureException, MojoExecutionException { + if (name == null) { + throw new MojoFailureException("NAR: Please specify <Name> as part of <Lib>"); + } + if (libs == null) { + if (!type.equals("framework") && (dir == null)) { + throw new MojoFailureException("NAR: Please specify <Directory> as part of <Lib>"); + } + LibrarySet libSet = new LibrarySet(); + libSet.setProject(antProject); + libSet.setLibs(new CUtil.StringArrayBuilder(name)); + LibraryTypeEnum libType = new LibraryTypeEnum(); + libType.setValue(type); + libSet.setType(libType); + libSet.setDir(dir); + linker.addLibset(libSet); + } else { + List dependencies = mojo.getNarManager().getNarDependencies("compile"); + for (Iterator i=libs.iterator(); i.hasNext(); ) { + Lib lib = (Lib)i.next(); + String[] ids = name.split(":",2); + if (ids.length != 2) { + throw new MojoFailureException("NAR: Please specify <Name> as part of <Lib> in format 'groupId:artifactId'"); + } + for (Iterator j=dependencies.iterator(); j.hasNext(); ) { + Artifact dependency = (Artifact)j.next(); + if (dependency.getGroupId().equals(ids[0]) && dependency.getArtifactId().equals(ids[1])) { + File narDir = new File(mojo.getNarManager().getNarFile(dependency).getParentFile(), "nar/lib/"+mojo.getAOL()+"/"+lib.type); + String narName = dependency.getArtifactId()+"-"+lib.name+"-"+dependency.getVersion(); + lib.addLibSet(mojo, linker, antProject, narName, narDir); + } + } + } + } + } +} + |