You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by fe...@apache.org on 2007/11/05 17:42:38 UTC

svn commit: r592075 - in /directory/sandbox/felixk/studio-plugin: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/directory/ src/main/java/org/apache/directory/studio/ src/main/java/org/apache/dire...

Author: felixk
Date: Mon Nov  5 08:42:37 2007
New Revision: 592075

URL: http://svn.apache.org/viewvc?rev=592075&view=rev
Log:
Initial studio maven-build

Added:
    directory/sandbox/felixk/studio-plugin/   (with props)
    directory/sandbox/felixk/studio-plugin/pom.xml   (with props)
    directory/sandbox/felixk/studio-plugin/src/
    directory/sandbox/felixk/studio-plugin/src/main/
    directory/sandbox/felixk/studio-plugin/src/main/java/
    directory/sandbox/felixk/studio-plugin/src/main/java/org/
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/AbstractStudioMojo.java   (with props)
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/ArtifactItem.java   (with props)
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioCopyEclipseDependencyMojo.java   (with props)
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioReplaceFileInJarMojo.java   (with props)
    directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioUnpackPrefixedMojo.java   (with props)
    directory/sandbox/felixk/studio-plugin/src/site/
    directory/sandbox/felixk/studio-plugin/src/site/apt/
    directory/sandbox/felixk/studio-plugin/src/site/apt/examples/
    directory/sandbox/felixk/studio-plugin/src/site/apt/examples/replace-file-in-jar.apt
    directory/sandbox/felixk/studio-plugin/src/site/apt/examples/unpack-with-prefix.apt
    directory/sandbox/felixk/studio-plugin/src/site/apt/index.apt
    directory/sandbox/felixk/studio-plugin/src/site/apt/usage.apt
    directory/sandbox/felixk/studio-plugin/src/site/fml/
    directory/sandbox/felixk/studio-plugin/src/site/fml/faq.fml
    directory/sandbox/felixk/studio-plugin/src/site/site.xml   (with props)

Propchange: directory/sandbox/felixk/studio-plugin/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Nov  5 08:42:37 2007
@@ -0,0 +1 @@
+target

Added: directory/sandbox/felixk/studio-plugin/pom.xml
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/pom.xml?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/pom.xml (added)
+++ directory/sandbox/felixk/studio-plugin/pom.xml Mon Nov  5 08:42:37 2007
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<!--
+    @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+    @version $Id: pom.xml 353 2007-10-28 14:59:35Z felix $
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>parent</artifactId>
+        <groupId>org.apache.directory.studio</groupId>
+        <version>1.0.2-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>maven-studio-plugin</artifactId>
+    <packaging>maven-plugin</packaging>
+    <name>Apache Directory Studio Plugin</name>
+
+    <description></description>
+
+    <!-- Set path for local repository -->
+    <properties>
+        <local-repo>${project.basedir}/../local-repository</local-repo>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-artifact</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-plugin-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-project</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.maven</groupId>
+            <artifactId>maven-model</artifactId>
+        </dependency>
+    </dependencies>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-plugin-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </reporting>
+
+</project>
\ No newline at end of file

Propchange: directory/sandbox/felixk/studio-plugin/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/AbstractStudioMojo.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/AbstractStudioMojo.java?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/AbstractStudioMojo.java (added)
+++ directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/AbstractStudioMojo.java Mon Nov  5 08:42:37 2007
@@ -0,0 +1,463 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.directory.studio.maven.plugins;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
+import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+
+/**
+ * The abstract studio mojo
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Id: AbstractStudioMojo.java 350 2007-10-28 12:01:17Z felix $
+ */
+public abstract class AbstractStudioMojo extends AbstractMojo {
+
+    /**
+     * Location of the file.
+     * 
+     * @parameter expression="${project.build.directory}"
+     * @required
+     * @readonly
+     */
+    protected String buildDirectory;
+
+    /**
+     * Used to look up Artifacts in the remote repository.
+     * 
+     * @parameter expression="${component.org.apache.maven.artifact.factory.ArtifactFactory}"
+     * @required
+     * @readonly
+     */
+    protected org.apache.maven.artifact.factory.ArtifactFactory factory;
+
+    /**
+     * Used to look up Artifacts in the remote repository.
+     * 
+     * @parameter expression="${component.org.apache.maven.artifact.resolver.ArtifactResolver}"
+     * @required
+     * @readonly
+     */
+    protected org.apache.maven.artifact.resolver.ArtifactResolver resolver;
+
+    /**
+     * Collection of ArtifactItems to work on. (ArtifactItem contains groupId,
+     * artifactId, version, type, classifier, location, destFile, markerFile and
+     * overwrite.) See "Usage" and "Javadoc" for details.
+     * 
+     * @parameter
+     * @required
+     */
+    protected ArrayList<ArtifactItem> artifactItems;
+
+    /**
+     * Artifact collector, needed to resolve dependencies.
+     * 
+     * @component role="org.apache.maven.artifact.resolver.ArtifactCollector"
+     * @required
+     * @readonly
+     */
+    protected ArtifactCollector artifactCollector;
+
+    /**
+     * @component role="org.apache.maven.artifact.metadata.ArtifactMetadataSource"
+     *            hint="maven"
+     * @required
+     * @readonly
+     */
+    protected ArtifactMetadataSource artifactMetadataSource;
+
+    /**
+     * Location of the local repository.
+     * 
+     * @parameter expression="${localRepository}"
+     * @readonly
+     * @required
+     */
+    protected org.apache.maven.artifact.repository.ArtifactRepository local;
+
+    /**
+     * List of Remote Repositories used by the resolver
+     * 
+     * @parameter expression="${project.remoteArtifactRepositories}"
+     * @readonly
+     * @required
+     */
+    protected List<ArtifactRepository> remoteRepos;
+
+    /**
+     * POM
+     * 
+     * @parameter expression="${project}"
+     * @readonly
+     * @required
+     */
+    protected MavenProject project;
+
+    /**
+     * Output absolute filename for resolved artifacts
+     * 
+     * @optional
+     * @since 2.0
+     * @parameter expression="${outputAbsoluteArtifactFilename}"
+     *            default-value="false"
+     */
+    protected boolean outputAbsoluteArtifactFilename;
+
+    /**
+     * Unzip a file into a directory
+     * 
+     * @param unzipDir
+     *            The directory the file unzip into
+     * @param zipFile
+     *            The file to unzip
+     */
+    protected void unzipToDir(final File unzipDir, final File zipFile) throws Exception {
+        final ZipFile zf = new ZipFile(zipFile);
+
+        try {
+            final Enumeration<? extends ZipEntry> zipEnum = zf.entries();
+            while (zipEnum.hasMoreElements()) {
+                final ZipEntry item = zipEnum.nextElement();
+
+                if (item.isDirectory()) {
+                    final File newdir = new File(unzipDir.getAbsoluteFile() + File.separator + item.getName());
+                    newdir.mkdirs();
+                } else {
+                    final String newfile = unzipDir.getAbsoluteFile() + File.separator + item.getName();
+                    final InputStream is = zf.getInputStream(item);
+                    final FileOutputStream fos = new FileOutputStream(newfile);
+                    try {
+                        int ch;
+                        while ((ch = is.read()) != -1) {
+                            fos.write(ch);
+                        }
+                    } finally {
+                        is.close();
+                        fos.flush();
+                        fos.close();
+                    }
+                }
+            }
+        } finally {
+            zf.close();
+        }
+    }
+
+    /**
+     * Zip a directory to given ZipOutputStream
+     * 
+     * @param dirToZip
+     *            A directory to zip
+     * @param zos
+     *            The A ZipOutputStream
+     * @throws Exception
+     *             If an error occurs
+     */
+    protected void zipFromDir(final File dirToZip, final File zipFile) throws Exception {
+        final ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
+        try {
+            if (!dirToZip.isFile() && !dirToZip.isDirectory()) {
+                throw new MojoExecutionException("Source file/directory " + dirToZip.getAbsolutePath() + " not found.");
+            }
+            zipFiles(dirToZip, zos, dirToZip.getAbsolutePath());
+        } finally {
+            zos.finish();
+            zos.close();
+        }
+    }
+
+    private void zipFiles(File cpFile, ZipOutputStream zos, final String dirToZip) throws Exception {
+        int byteCount;
+        final int DATA_BLOCK_SIZE = 2048;
+
+        if (cpFile.isDirectory()) {
+            File[] fList = cpFile.listFiles();
+            for (File aFile : fList) {
+                zipFiles(aFile, zos, dirToZip);
+            }
+        } else {
+            String strAbsPath = cpFile.getPath();
+            String strZipEntryName = strAbsPath.substring(dirToZip.length() + 1, strAbsPath.length());
+
+            final FileInputStream cpFileInputStream = new FileInputStream(cpFile);
+            try {
+                ZipEntry cpZipEntry = new ZipEntry(strZipEntryName);
+                zos.putNextEntry(cpZipEntry);
+
+                final byte[] b = new byte[DATA_BLOCK_SIZE];
+                while ((byteCount = cpFileInputStream.read(b, 0, DATA_BLOCK_SIZE)) != -1) {
+                    zos.write(b, 0, byteCount);
+                }
+                zos.closeEntry();
+            } finally {
+                cpFileInputStream.close();
+            }
+        }
+    }
+
+    /**
+     * Resolves the Artifact from the remote repository if nessessary. If no
+     * version is specified, it will be retrieved from the dependency list or
+     * from the DependencyManagement section of the pom.
+     * 
+     * @param artifactItem
+     *            containing information about artifact from plugin
+     *            configuration.
+     * @return Artifact object representing the specified file.
+     * 
+     * @throws MojoExecutionException
+     *             with a message if the version can't be found in
+     *             DependencyManagement.
+     */
+    protected Artifact getArtifact(ArtifactItem artifactItem) throws MojoExecutionException {
+        Artifact artifact;
+
+        VersionRange vr;
+        try {
+            vr = VersionRange.createFromVersionSpec(artifactItem.getVersion());
+        } catch (InvalidVersionSpecificationException e1) {
+            e1.printStackTrace();
+            vr = VersionRange.createFromVersion(artifactItem.getVersion());
+        }
+
+        if (StringUtils.isEmpty(artifactItem.getClassifier())) {
+            artifact = factory.createDependencyArtifact(artifactItem.getGroupId(), artifactItem.getArtifactId(), vr,
+                    artifactItem.getType(), null, Artifact.SCOPE_COMPILE);
+        } else {
+            artifact = factory.createDependencyArtifact(artifactItem.getGroupId(), artifactItem.getArtifactId(), vr,
+                    artifactItem.getType(), artifactItem.getClassifier(), Artifact.SCOPE_COMPILE);
+        }
+
+        try {
+            resolver.resolve(artifact, remoteRepos, local);
+        } catch (ArtifactResolutionException e) {
+            throw new MojoExecutionException("Unable to resolve artifact.", e);
+        } catch (ArtifactNotFoundException e) {
+            throw new MojoExecutionException("Unable to find artifact.", e);
+        }
+
+        return artifact;
+    }
+
+    /**
+     * Tries to find missing version from dependancy list and dependency
+     * management. If found, the artifact is updated with the correct version.
+     * 
+     * It will first look for an exact match on
+     * artifactId/groupId/classifier/type and if it doesn't find a match, it
+     * will try again looking for artifactId and groupId only.
+     * 
+     * @param artifact
+     *            representing configured file.
+     * @throws MojoExecutionException
+     */
+    protected void fillMissingArtifactVersion(ArtifactItem artifact) throws MojoExecutionException {
+        if (!findDependencyVersion(artifact, project.getDependencies(), false)
+                && (project.getDependencyManagement() == null || !findDependencyVersion(artifact, project
+                        .getDependencyManagement().getDependencies(), false))
+                && !findDependencyVersion(artifact, project.getDependencies(), true)
+                && (project.getDependencyManagement() == null || !findDependencyVersion(artifact, project
+                        .getDependencyManagement().getDependencies(), true))) {
+            throw new MojoExecutionException("Unable to find artifact version of " + artifact.getGroupId() + ":"
+                    + artifact.getArtifactId() + " in either dependency list or in project's dependency management.");
+        }
+    }
+
+    /**
+     * Tries to find missing version from a list of dependencies. If found, the
+     * artifact is updated with the correct version.
+     * 
+     * @param artifact
+     *            representing configured file.
+     * @param list
+     *            list of dependencies to search.
+     * @param looseMatch
+     *            only look at artifactId and groupId
+     * @return the found dependency
+     */
+    protected boolean findDependencyVersion(ArtifactItem artifact, List<Dependency> list, boolean looseMatch) {
+        boolean result = false;
+
+        for (int i = 0; i < list.size(); i++) {
+            Dependency dependency = list.get(i);
+            if (StringUtils.equals(dependency.getArtifactId(), artifact.getArtifactId())
+                    && StringUtils.equals(dependency.getGroupId(), artifact.getGroupId())
+                    && (looseMatch || StringUtils.equals(dependency.getClassifier(), artifact.getClassifier()))
+                    && (looseMatch || StringUtils.equals(dependency.getType(), artifact.getType()))) {
+
+                artifact.setVersion(dependency.getVersion());
+                result = true;
+                break;
+            }
+        }
+        return result;
+    }
+
+    /**
+     * Complete the artifacts in the artifactItems list (e.g. complete with
+     * version number)
+     * 
+     * @throws MojoExecutionException
+     */
+    protected void completeArtifactItems() throws MojoExecutionException {
+        try {
+            // Get and complete artifacts
+            for (Iterator<ArtifactItem> artifactItem = artifactItems.iterator(); artifactItem.hasNext();) {
+                ArtifactItem item = artifactItem.next();
+                // make sure we have a version.
+                if (StringUtils.isEmpty(item.getVersion())) {
+                    fillMissingArtifactVersion(item);
+                }
+                item.setArtifact(this.getArtifact(item));
+            }
+        } catch (Exception e) {
+            throw new MojoExecutionException("", e);
+        }
+    }
+
+    /**
+     * @param artifactItems
+     *            the artifactItems to set
+     */
+    public void setArtifactItems(ArrayList<ArtifactItem> artifactItems) {
+        this.artifactItems = artifactItems;
+    }
+
+    /**
+     * @return Returns the factory.
+     */
+    public org.apache.maven.artifact.factory.ArtifactFactory getFactory() {
+        return this.factory;
+    }
+
+    /**
+     * @param factory
+     *            The factory to set.
+     */
+    public void setFactory(org.apache.maven.artifact.factory.ArtifactFactory factory) {
+        this.factory = factory;
+    }
+
+    /**
+     * @return Returns the project.
+     */
+    public MavenProject getProject() {
+        return this.project;
+    }
+
+    /**
+     * @return Returns the local.
+     */
+    public org.apache.maven.artifact.repository.ArtifactRepository getLocal() {
+        return this.local;
+    }
+
+    /**
+     * @param local
+     *            The local to set.
+     */
+    public void setLocal(org.apache.maven.artifact.repository.ArtifactRepository local) {
+        this.local = local;
+    }
+
+    /**
+     * @return Returns the remoteRepos.
+     */
+    public List<ArtifactRepository> getRemoteRepos() {
+        return this.remoteRepos;
+    }
+
+    /**
+     * @param remoteRepos
+     *            The remoteRepos to set.
+     */
+    public void setRemoteRepos(List<ArtifactRepository> remoteRepos) {
+        this.remoteRepos = remoteRepos;
+    }
+
+    /**
+     * @return Returns the resolver.
+     */
+    public org.apache.maven.artifact.resolver.ArtifactResolver getResolver() {
+        return this.resolver;
+    }
+
+    /**
+     * @param resolver
+     *            The resolver to set.
+     */
+    public void setResolver(org.apache.maven.artifact.resolver.ArtifactResolver resolver) {
+        this.resolver = resolver;
+    }
+
+    /**
+     * @return Returns the artifactCollector.
+     */
+    public ArtifactCollector getArtifactCollector() {
+        return this.artifactCollector;
+    }
+
+    /**
+     * @param theArtifactCollector
+     *            The artifactCollector to set.
+     */
+    public void setArtifactCollector(ArtifactCollector theArtifactCollector) {
+        this.artifactCollector = theArtifactCollector;
+    }
+
+    /**
+     * @return Returns the artifactMetadataSource.
+     */
+    public ArtifactMetadataSource getArtifactMetadataSource() {
+        return this.artifactMetadataSource;
+    }
+
+    /**
+     * @param theArtifactMetadataSource
+     *            The artifactMetadataSource to set.
+     */
+    public void setArtifactMetadataSource(ArtifactMetadataSource theArtifactMetadataSource) {
+        this.artifactMetadataSource = theArtifactMetadataSource;
+    }
+}
\ No newline at end of file

Propchange: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/AbstractStudioMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/ArtifactItem.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/ArtifactItem.java?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/ArtifactItem.java (added)
+++ directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/ArtifactItem.java Mon Nov  5 08:42:37 2007
@@ -0,0 +1,196 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.directory.studio.maven.plugins;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.artifact.Artifact;
+
+/**
+ * ArtifactItem represents information specified in the plugin configuration
+ * section for each artifact.
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Id: ArtifactItem.java 349 2007-10-28 11:51:21Z felix $
+ */
+public class ArtifactItem {
+    /**
+     * Group Id of Artifact
+     * 
+     * @parameter
+     * @required
+     */
+    private String groupId;
+
+    /**
+     * Name of Artifact
+     * 
+     * @parameter
+     * @required
+     */
+    private String artifactId;
+
+    /**
+     * Version of Artifact
+     * 
+     * @parameter
+     */
+    private String version = null;
+
+    /**
+     * Type of Artifact (War,Jar,etc)
+     * 
+     * @parameter
+     * @required
+     */
+    private String type = "jar";
+
+    /**
+     * Classifier for Artifact (tests,sources,etc)
+     * 
+     * @parameter
+     */
+    private String classifier;
+
+    /**
+     * Artifact Item
+     */
+    private Artifact artifact;
+
+    public ArtifactItem() {
+        // default constructor
+    }
+
+    public ArtifactItem(Artifact artifact) {
+        this.setArtifact(artifact);
+        this.setArtifactId(artifact.getArtifactId());
+        this.setClassifier(artifact.getClassifier());
+        this.setGroupId(artifact.getGroupId());
+        this.setType(artifact.getType());
+        this.setVersion(artifact.getVersion());
+    }
+
+    private String filterEmptyString(String in) {
+        if (in == null || in.equals("")) {
+            return null;
+        } else {
+            return in;
+        }
+    }
+
+    /**
+     * @return Returns the artifactId.
+     */
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    /**
+     * @param artifactId
+     *            The artifactId to set.
+     */
+    public void setArtifactId(String artifact) {
+        this.artifactId = filterEmptyString(artifact);
+    }
+
+    /**
+     * @return Returns the groupId.
+     */
+    public String getGroupId() {
+        return groupId;
+    }
+
+    /**
+     * @param groupId
+     *            The groupId to set.
+     */
+    public void setGroupId(String groupId) {
+        this.groupId = filterEmptyString(groupId);
+    }
+
+    /**
+     * @return Returns the type.
+     */
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * @param type
+     *            The type to set.
+     */
+    public void setType(String type) {
+        this.type = filterEmptyString(type);
+    }
+
+    /**
+     * @return Returns the version.
+     */
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * @param version
+     *            The version to set.
+     */
+    public void setVersion(String version) {
+        this.version = filterEmptyString(version);
+    }
+
+    /**
+     * @return Classifier.
+     */
+    public String getClassifier() {
+        return classifier;
+    }
+
+    /**
+     * @param classifier
+     *            Classifier.
+     */
+    public void setClassifier(String classifier) {
+        this.classifier = filterEmptyString(classifier);
+    }
+
+    public String toString() {
+        if (this.classifier == null) {
+            return groupId + ":" + artifactId + ":" + StringUtils.defaultString(version, "?") + ":" + type;
+        } else {
+            return groupId + ":" + artifactId + ":" + classifier + ":" + StringUtils.defaultString(version, "?") + ":"
+                    + type;
+        }
+    }
+
+    /**
+     * @return Returns the artifact.
+     */
+    public Artifact getArtifact() {
+        return this.artifact;
+    }
+
+    /**
+     * @param artifact
+     *            The artifact to set.
+     */
+    public void setArtifact(Artifact artifact) {
+        this.artifact = artifact;
+    }
+
+}

Propchange: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/ArtifactItem.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioCopyEclipseDependencyMojo.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioCopyEclipseDependencyMojo.java?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioCopyEclipseDependencyMojo.java (added)
+++ directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioCopyEclipseDependencyMojo.java Mon Nov  5 08:42:37 2007
@@ -0,0 +1,83 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.directory.studio.maven.plugins;
+
+import java.io.File;
+import java.util.Iterator;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.maven.plugin.MojoExecutionException;
+
+/**
+ * Copy a set of artifacts to a configured output directory by replacing the
+ * separator between artifactId and version by an underscore instead of a dash.
+ * 
+ * @goal copy-eclipse-artifact
+ * @description Replace the separator between artifactId and version by an
+ *              underscore instead of a dash and copy the artifact to a given
+ *              destination directory
+ * @requiresProject
+ * @requiresDependencyResolution runtime
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Id: StudioReplaceFileInJarMojo.java 350 2007-10-28 12:01:17Z felix $
+ */
+public class StudioCopyEclipseDependencyMojo extends AbstractStudioMojo {
+
+    /**
+     * Location of the file.
+     * 
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private File destinationDirectory;
+
+    /**
+     * @param destinationDirectory
+     *            the destinationDirectory to set
+     */
+    public void setDestinationDirectory(File destinationDirectory) {
+        this.destinationDirectory = destinationDirectory;
+    }
+
+    public void execute() throws MojoExecutionException {
+
+        completeArtifactItems();
+
+        for (Iterator<ArtifactItem> artifactItem = artifactItems.iterator(); artifactItem.hasNext();) {
+            ArtifactItem item = artifactItem.next();
+            try {
+
+                final File destFile = new File(destinationDirectory.getAbsoluteFile() + File.separator
+                        + item.getArtifactId() + "_" + item.getVersion() + "." + item.getType());
+
+                getLog().info("Copying " + item.getArtifactId() + " to " + destFile.getAbsolutePath());
+
+                if (!destinationDirectory.exists()) {
+                    destinationDirectory.mkdirs();
+                }
+                FileUtils.copyFile(item.getArtifact().getFile(), destFile);
+
+            } catch (Exception e) {
+                throw new MojoExecutionException("", e);
+            }
+        }
+    }
+}

Propchange: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioCopyEclipseDependencyMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioReplaceFileInJarMojo.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioReplaceFileInJarMojo.java?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioReplaceFileInJarMojo.java (added)
+++ directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioReplaceFileInJarMojo.java Mon Nov  5 08:42:37 2007
@@ -0,0 +1,115 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.directory.studio.maven.plugins;
+
+import java.io.File;
+import java.util.Iterator;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.maven.plugin.MojoExecutionException;
+
+/**
+ * Add ro replace file in existing, distributed artifact
+ * 
+ * @goal replace-file-in-eclipse-artifact
+ * @description Add/Replace a file within a given eclipse artifact at a specific
+ *              location (zip or jar file)
+ * @phase package
+ * @requiresProject
+ * @requiresDependencyResolution runtime
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Id: StudioReplaceFileInJarMojo.java 368 2007-11-02 06:52:32Z felix $
+ */
+public class StudioReplaceFileInJarMojo extends AbstractStudioMojo {
+
+    /**
+     * FinalName of the jar file
+     * 
+     * @parameter
+     * @required
+     */
+    private File inputFile;
+
+    /**
+     * Location of the file.
+     * 
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private File destinationDirectory;
+
+    /**
+     * Tmp work directory for this plugin
+     * 
+     * @parameter expression="${project.build.directory}/ReplaceFileInJarMojo/"
+     * @required
+     * @readonly
+     */
+    private String pluginWorkDir;
+
+    /**
+     * @param destinationDirectory
+     *            the destinationDirectory to set
+     */
+    public void setDestinationDirectory(File destinationDirectory) {
+        this.destinationDirectory = destinationDirectory;
+    }
+
+    /**
+     * @param inputFile
+     *            the inputFile to set
+     */
+    public void setInputFile(File inputFile) {
+        this.inputFile = inputFile;
+    }
+
+    public void execute() throws MojoExecutionException {
+
+        completeArtifactItems();
+
+        // Add file to dest jar
+        for (Iterator<ArtifactItem> artifactItem = artifactItems.iterator(); artifactItem.hasNext();) {
+            ArtifactItem item = artifactItem.next();
+            try {
+                final File zipFile = new File(destinationDirectory.getAbsolutePath() + File.separator
+                        + item.getArtifactId() + "_" + item.getVersion() + "." + item.getType());
+                final File tmpDir = new File(pluginWorkDir + item.getArtifact().getArtifactId());
+
+                getLog().info("Adding " + inputFile + " to " + zipFile);
+
+                if (getLog().isDebugEnabled())
+                    getLog().debug("Unzipping " + zipFile + " into " + tmpDir);
+                unzipToDir(tmpDir, zipFile);
+
+                if (getLog().isDebugEnabled())
+                    getLog().debug("Copying " + inputFile + " into " + tmpDir);
+                FileUtils.copyFileToDirectory(inputFile, tmpDir);
+
+                if (getLog().isDebugEnabled())
+                    getLog().debug("Zipping " + tmpDir + " into " + zipFile);
+                zipFromDir(tmpDir, zipFile);
+
+            } catch (Exception e) {
+                throw new MojoExecutionException("", e);
+            }
+        }
+    }
+}

Propchange: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioReplaceFileInJarMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioUnpackPrefixedMojo.java
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioUnpackPrefixedMojo.java?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioUnpackPrefixedMojo.java (added)
+++ directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioUnpackPrefixedMojo.java Mon Nov  5 08:42:37 2007
@@ -0,0 +1,79 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.directory.studio.maven.plugins;
+
+import java.io.File;
+import java.util.Iterator;
+
+import org.apache.maven.plugin.MojoExecutionException;
+
+/**
+ * Prefixes the unpack of an artifact into a given directory with a directory
+ * named based on the artifacts final name
+ * 
+ * @goal unpack-with-artifactid-prefix
+ * @description Prefixes the unpack of an artifact into a given directory with a
+ *              directory named based on the artifacts final name
+ * @phase package
+ * @requiresProject
+ * @requiresDependencyResolution runtime
+ * 
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Id: StreamGenerator.java 448473 2006-09-21 06:22:51Z crossley $
+ */
+public class StudioUnpackPrefixedMojo extends AbstractStudioMojo {
+
+    /**
+     * Location of the file.
+     * 
+     * @parameter expression="${project.build.directory}"
+     * @required
+     */
+    private File outputDirectory;
+
+    /**
+     * @param outputDirectory
+     *            the outputDirectory to set
+     */
+    public void setOutputDirectory(File outputDirectory) {
+        this.outputDirectory = outputDirectory;
+    }
+
+    public void execute() throws MojoExecutionException {
+
+        completeArtifactItems();
+
+        // unzip it
+        for (Iterator<ArtifactItem> artifactItem = artifactItems.iterator(); artifactItem.hasNext();) {
+            ArtifactItem item = artifactItem.next();
+            try {
+                final File tmpDir = new File(outputDirectory.getAbsoluteFile() + File.separator + item.getArtifactId()
+                        + "_" + item.getVersion());
+
+                if (getLog().isDebugEnabled())
+                    getLog().debug("Unzipping " + item.getArtifact().getFile() + " into " + tmpDir);
+                unzipToDir(tmpDir, item.getArtifact().getFile());
+
+            } catch (Exception e) {
+                throw new MojoExecutionException("", e);
+            }
+        }
+    }
+}

Propchange: directory/sandbox/felixk/studio-plugin/src/main/java/org/apache/directory/studio/maven/plugins/StudioUnpackPrefixedMojo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: directory/sandbox/felixk/studio-plugin/src/site/apt/examples/replace-file-in-jar.apt
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/site/apt/examples/replace-file-in-jar.apt?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/site/apt/examples/replace-file-in-jar.apt (added)
+++ directory/sandbox/felixk/studio-plugin/src/site/apt/examples/replace-file-in-jar.apt Mon Nov  5 08:42:37 2007
@@ -0,0 +1,64 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you 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.    
+ 
+  ------
+  Add or replace a file to existing, distributed artifact
+  ------
+  Felix Knecht
+  ------
+  Oct 2007
+  ------
+
+Add or replace a file to existing, distributed artifact
+
+  Adds or replaces a file in an existing, distributed artifact.
+
++---+
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.directory.studio</groupId>
+        <artifactId>maven-studio-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>replace-plugin.xml-in-org.eclipse.search</id>
+            <phase>process-resources</phase>
+            <goals>
+              <goal>replace-file-in-jar</goal>
+            </goals>
+            <configuration>
+              <inputFile>src/main/configuration/org.eclipse.search/plugin.xml</inputFile>
+              <destinationDirectory>${studio-dir}/plugins</destinationDirectory>
+              <overWrite>false</overWrite>
+              <outputDirectory>target/eclipse/plugins</outputDirectory>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>org.eclipse</groupId>
+                  <artifactId>org.eclipse.search</artifactId>
+                </artifactItem>
+              </artifactItems>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+

Added: directory/sandbox/felixk/studio-plugin/src/site/apt/examples/unpack-with-prefix.apt
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/site/apt/examples/unpack-with-prefix.apt?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/site/apt/examples/unpack-with-prefix.apt (added)
+++ directory/sandbox/felixk/studio-plugin/src/site/apt/examples/unpack-with-prefix.apt Mon Nov  5 08:42:37 2007
@@ -0,0 +1,66 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you 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.    
+ 
+  ------
+  Unpack with prefix
+  ------
+  Felix Knecht
+  ------
+  Oct 2007
+  ------
+
+Unpack with prefix
+
+  Unpack an artifact in a desired location and put the artifact content into a directory
+  named like the final artifacts name (This is mainly used to unpack a *-feature.jar).
+
++---+
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.directory.studio</groupId>
+        <artifactId>maven-studio-plugin</artifactId>
+        <executions>
+        <executions>
+          <execution>
+            <id>unpack-with-artifactid-prefix</id>
+            <phase>process-resources</phase>
+            <goals>
+              <goal>unpack-with-artifactid-prefix</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>target/features</outputDirectory>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>org.apache.directory.studio</groupId>
+                  <artifactId>${pom.groupId}.feature</artifactId>
+                </artifactItem>
+                <artifactItem>
+                  <groupId>org.apache.directory.studio</groupId>
+                  <artifactId>${pom.groupId}.schemaeditor.feature</artifactId>
+                </artifactItem>
+              </artifactItems>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+

Added: directory/sandbox/felixk/studio-plugin/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/site/apt/index.apt?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/site/apt/index.apt (added)
+++ directory/sandbox/felixk/studio-plugin/src/site/apt/index.apt Mon Nov  5 08:42:37 2007
@@ -0,0 +1,59 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you 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.    
+ 
+  ------
+  Introduction
+  ------
+  Felix Knecht
+  ------
+  Oct 2007
+  ------
+
+Directory Studio Maven Plugin
+
+  The directory studio maven plugin provides the capability to manipulate artifacts. It
+  can prefix existing jar content with a director or can replace/add a file within an existing
+  zip/jar archive.
+
+* Goals Overview
+
+  The directory studio maven plugin has 2 goals:
+  
+  *{{{replace-mojo.html}studio:replace-file-in-jar}} takes a list of artifacts defined in
+  the plugin configuration section and a configured directory where the artifacts
+  are located (not in the local maven repository, but after a being copied e.g. to target
+  directory) and replaced/adds a desired file to them.
+
+  *{{{prefix-mojo.html}studio:unpack-with-artifactid-prefix}} unpack an artifact in a desired location and put
+  the artifact content into a directory named like the final artifacts name (This is mainly used
+  to unpack a *-feature.jar).
+
+  []
+  
+* Usage
+
+   * Instructions on how to use the dependency plugin can be found {{{usage.html}here}}.
+
+  []
+
+* Examples
+
+  The following examples show how to use the directory studio maven plugin in more advanced use-cases:
+  
+  * {{{examples/replace-file-in-jar.html}replace/update a file in jar artifacts at a given location}}.
+
+  * {{{examples/unpack-with-prefix.html}Unpack artifact content into prefixed destination}}

Added: directory/sandbox/felixk/studio-plugin/src/site/apt/usage.apt
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/site/apt/usage.apt?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/site/apt/usage.apt (added)
+++ directory/sandbox/felixk/studio-plugin/src/site/apt/usage.apt Mon Nov  5 08:42:37 2007
@@ -0,0 +1,112 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements.  See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership.  The ASF licenses this file
+~~ to you 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.    
+ 
+  ------
+  Usage
+  ------
+  Felix Knecht
+  ------
+  Oct 2007
+  ------
+
+Usage
+ 
+  Brief examples on how to use the dependency goals.
+ 
+* Generic Plugin configuration information
+
+  See the following links for information about including and configuring plugins in your project:
+  
+  *{{{http://maven.apache.org/guides/mini/guide-configuring-plugins.html}Configuring Plugins}}
+  
+  *{{{http://maven.apache.org/guides/plugin/guide-java-plugin-development.html}Plugin Development}}
+
+  *{{{http://maven.apache.org/guides/introduction/introduction-to-plugin-prefix-mapping.html}Plugin Prefix}}
+
+* The <<<studio:prefix-jar-content>>> mojo
+
+Prefix built jar
+
+  Prefixes the content of the built jar with its artifact name 
+  (normally used to build extractable studio-*-feature.jar).
+
++---+
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.directory.studio</groupId>
+        <artifactId>maven-studio-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>prefix-jar-content</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+
+  
+* The <<<studio:replace-file-in-jar>>> mojo
+
+Add or replace a file to existing, distributed artifact
+
+  Adds or replaces a file in an existing, distributed artifact.
+
++---+
+<project>
+  [...]
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.directory.studio</groupId>
+        <artifactId>maven-studio-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>replace-plugin.xml-in-org.eclipse.search</id>
+            <phase>process-resources</phase>
+            <goals>
+              <goal>replace-file-in-jar</goal>
+            </goals>
+            <configuration>
+              <inputFile>src/main/configuration/org.eclipse.search/plugin.xml</inputFile>
+              <destinationDirectory>${studio-dir}/plugins</destinationDirectory>
+              <overWrite>false</overWrite>
+              <outputDirectory>target/eclipse/plugins</outputDirectory>
+              <artifactItems>
+                <artifactItem>
+                  <groupId>org.eclipse</groupId>
+                  <artifactId>org.eclipse.search</artifactId>
+                </artifactItem>
+              </artifactItems>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  [...]
+</project>
++---+
+  
+  
+  

Added: directory/sandbox/felixk/studio-plugin/src/site/fml/faq.fml
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/site/fml/faq.fml?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/site/fml/faq.fml (added)
+++ directory/sandbox/felixk/studio-plugin/src/site/fml/faq.fml Mon Nov  5 08:42:37 2007
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<!--
+    @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+    @version $Id: pom.xml 353 2007-10-28 14:59:35Z felix $
+-->
+
+<faqs id="FAQ" title="Frequently Asked Questions">
+<part id="general">
+    <title>General</title>
+   
+    <faq id="whats-foo">
+      <question>
+        What is Foo?
+      </question>
+      <answer>
+        <p>some markup goes here</p>
+        
+        <source>some source code</source>
+        
+        <p>some markup goes here</p>
+      </answer>
+    </faq>
+
+    <faq id="whats-bar">
+      <question>
+        What is Bar?
+      </question>
+      <answer>
+        <p>some markup goes here</p>
+      </answer>
+    </faq>
+  </part>
+  
+  <part id="install">
+    <title>Installation</title>
+   
+    <faq id="how-install">
+      <question>
+        How do I install Foo?
+      </question>
+      <answer>
+        <p>some markup goes here</p>
+      </answer>
+    </faq>
+  </part>  
+</faqs>

Added: directory/sandbox/felixk/studio-plugin/src/site/site.xml
URL: http://svn.apache.org/viewvc/directory/sandbox/felixk/studio-plugin/src/site/site.xml?rev=592075&view=auto
==============================================================================
--- directory/sandbox/felixk/studio-plugin/src/site/site.xml (added)
+++ directory/sandbox/felixk/studio-plugin/src/site/site.xml Mon Nov  5 08:42:37 2007
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<!--
+    @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+    @version $Id: pom.xml 353 2007-10-28 14:59:35Z felix $
+-->
+
+<project>
+    <body>
+        <menu name="Overview">
+            <item name="Introduction" href="index.html" />
+            <item name="Goals" href="plugin-info.html" />
+            <item name="Usage" href="usage.html" />
+            <item name="FAQ" href="faq.html" />
+        </menu>
+        <menu name="Examples">
+            <item name="Unpack with prefix" href="examples/unpack-with-prefix.html" />
+            <item name="Add/replace file in distributed artifact" href="examples/replace-file-in-jar.html" />
+        </menu>
+        <menu ref="reports" />
+    </body>
+</project>
\ No newline at end of file

Propchange: directory/sandbox/felixk/studio-plugin/src/site/site.xml
------------------------------------------------------------------------------
    svn:eol-style = native