diff --git a/scm-maven-plugins/pom.xml b/scm-maven-plugins/pom.xml
index 8bf26056dc..bdac48db28 100644
--- a/scm-maven-plugins/pom.xml
+++ b/scm-maven-plugins/pom.xml
@@ -17,7 +17,6 @@
scm-plugin-archetype
- scm-maven-plugin
scm-annotation-processor
diff --git a/scm-maven-plugins/scm-maven-plugin/pom.xml b/scm-maven-plugins/scm-maven-plugin/pom.xml
deleted file mode 100644
index 91a420e30d..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/pom.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
- 4.0.0
-
-
- scm-maven-plugins
- sonia.scm.maven
- 2.0.0-SNAPSHOT
-
-
- sonia.scm.maven
- scm-maven-plugin
- 2.0.0-SNAPSHOT
- maven-plugin
- scm-maven-plugin
-
-
-
-
-
- org.apache.maven.plugins
- maven-plugin-plugin
- 2.8
-
- scmp
-
-
-
-
-
-
-
-
-
- org.apache.maven
- maven-plugin-api
- ${mavenVersion}
-
-
-
- org.apache.maven
- maven-artifact
- ${mavenVersion}
-
-
-
- org.apache.maven
- maven-project
- ${mavenVersion}
-
-
-
- org.apache.maven
- maven-model
- ${mavenVersion}
-
-
-
- org.codehaus.plexus
- plexus-utils
- 1.5.6
-
-
-
- commons-lang
- commons-lang
- 2.6
-
-
-
- commons-io
- commons-io
- 2.0.1
-
-
-
- org.eclipse.jetty
- jetty-webapp
- ${jetty.version}
-
-
-
- org.slf4j
- slf4j-simple
- ${slf4j.version}
-
-
-
-
-
- 2.0.6
-
-
-
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AbstractBaseScmMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AbstractBaseScmMojo.java
deleted file mode 100644
index c4ca941131..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AbstractBaseScmMojo.java
+++ /dev/null
@@ -1,473 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.installer.ArtifactInstallationException;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Scanner;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public abstract class AbstractBaseScmMojo extends AbstractScmMojo
-{
-
- /** Field description */
- public static final String PROPERTY_SCM_HOME = "scm.home";
-
- /** Field description */
- private static final String FILE_CLASSPATH = "classpath.xml";
-
- /** Field description */
- private static final String RESOURCE_DEPENDENCY_LIST =
- "WEB-INF/classes/config/dependencies.list";
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param warFile
- *
- * @return
- *
- * @throws MojoExecutionException
- */
- protected List createExcludeList(File warFile)
- throws MojoExecutionException
- {
- List excludeList = new ArrayList();
- InputStream input = null;
-
- JarFile file = null;
-
- try
- {
- file = new JarFile(warFile);
-
- JarEntry entry = file.getJarEntry(RESOURCE_DEPENDENCY_LIST);
-
- if (entry == null)
- {
- throw new MojoExecutionException("could not find dependency list");
- }
-
- input = file.getInputStream(entry);
-
- Scanner scanner = null;
-
- try
- {
- scanner = new Scanner(input);
-
- while (scanner.hasNextLine())
- {
- parseLine(excludeList, scanner.nextLine());
- }
- }
- finally
- {
- Util.close(scanner);
- }
- }
- catch (IOException ex)
- {
- throw new MojoExecutionException("could not read dependency file", ex);
- }
- finally
- {
- IOUtils.closeQuietly(input);
- Util.close(getLog(), file);
- }
-
- return excludeList;
- }
-
- /**
- * Method description
- *
- *
- *
- *
- * @param excludeList
- * @throws MojoExecutionException
- */
- protected void installArtifacts(List excludeList)
- throws MojoExecutionException
- {
- File pluginDirectory = new File(scmHome, "plugins");
-
- installArtifacts(excludeList, pluginDirectory);
- }
-
- /**
- * Method description
- *
- *
- * @param excludeList
- * @param pluginDirectory
- *
- * @throws MojoExecutionException
- */
- protected void installArtifacts(List excludeList,
- File pluginDirectory)
- throws MojoExecutionException
- {
-
- if (!pluginDirectory.exists() &&!pluginDirectory.mkdirs())
- {
- throw new MojoExecutionException(
- "could not create plugin directory ".concat(pluginDirectory.getPath()));
- }
-
- String repositoryUrl = "file://".concat(pluginDirectory.getAbsolutePath());
- ArtifactRepositoryLayout layout =
- availableRepositoryLayouts.get(repositoryLayout);
-
- if (layout == null)
- {
- throw new MojoExecutionException(
- "could not find repository layout ".concat(repositoryLayout));
- }
-
- ArtifactRepository pluginRepository =
- artifactRepositoryFactory.createDeploymentArtifactRepository(
- "scm-run-plugin", repositoryUrl, layout, true);
- List classpath = new ArrayList();
- String pluginDirectoryPath = pluginDirectory.getAbsolutePath();
-
- installArtifact(excludeList, pluginDirectoryPath, classpath,
- pluginRepository, getPluginArtifact());
-
- if (artifacts != null)
- {
- for (Artifact artifact : artifacts)
- {
- installArtifact(excludeList, pluginDirectoryPath, classpath,
- pluginRepository, artifact);
- }
- }
-
- File classpathFile = new File(pluginDirectory, FILE_CLASSPATH);
-
- if (classpathFile.exists())
- {
- readClasspathFile(classpath, classpathFile);
- }
-
- writeClasspathFile(classpath, classpathFile);
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param artifact
- *
- * @return
- */
- protected String getId(Artifact artifact)
- {
- return artifact.getGroupId().concat(":").concat(artifact.getArtifactId());
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- protected Artifact getPluginArtifact()
- {
- if (projectArtifact.getFile() == null)
- {
- File file = new File(project.getBuild().getDirectory(),
- project.getBuild().getFinalName().concat(".jar"));
-
- projectArtifact.setFile(file);
- }
-
- return projectArtifact;
- }
-
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws MojoExecutionException
- */
- protected File getWebApplicationArchive() throws MojoExecutionException
- {
- File warFile = null;
-
- if (Util.isEmpty(webApplication.getVersion()))
- {
- String version = null;
- MavenProject parent = project.getParent();
-
- if (parent != null)
- {
- version = parent.getVersion();
- }
- else
- {
- version = project.getVersion();
- }
-
- webApplication.setVersion(version);
- }
-
- Artifact artifact =
- artifactFactory.createArtifact(webApplication.getGroupId(),
- webApplication.getArtifactId(), webApplication.getVersion(), "",
- webApplication.getType());
-
- try
- {
- artifactResolver.resolve(artifact, remoteRepositories, localRepository);
- warFile = artifact.getFile();
-
- if (!warFile.exists())
- {
- throw new MojoExecutionException("could not find webapp artifact file");
- }
- }
- catch (ArtifactNotFoundException ex)
- {
- throw new MojoExecutionException("could not find artifact", ex);
- }
- catch (ArtifactResolutionException ex)
- {
- throw new MojoExecutionException("could not fetch war-file", ex);
- }
-
- return warFile;
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param pluginDirectoryPath
- * @param classpath
- * @param source
- * @param artifact
- * @param localRepository
- *
- * @throws ArtifactInstallationException
- */
- private void install(String pluginDirectoryPath, List classpath,
- File source, Artifact artifact, ArtifactRepository localRepository)
- throws ArtifactInstallationException
- {
- try
- {
- String localPath = localRepository.pathOf(artifact);
- File destination = new File(localRepository.getBasedir(), localPath);
-
- if (!destination.getParentFile().exists())
- {
- destination.getParentFile().mkdirs();
- }
-
- getLog().info("Installing artifact " + source.getPath() + " to "
- + destination);
- FileUtils.copyFile(source, destination);
-
- String relativePath =
- destination.getAbsolutePath().substring(pluginDirectoryPath.length());
-
- classpath.add(relativePath);
- }
- catch (IOException e)
- {
- throw new ArtifactInstallationException("Error installing artifact: "
- + e.getMessage(), e);
- }
- }
-
- /**
- * Method description
- *
- *
- *
- *
- * @param excludeList
- * @param pluginDirectoryPath
- * @param classpath
- * @param pluginRepository
- * @param artifact
- *
- * @throws MojoExecutionException
- */
- private void installArtifact(List excludeList,
- String pluginDirectoryPath, List classpath,
- ArtifactRepository pluginRepository, Artifact artifact)
- throws MojoExecutionException
- {
- String id = getId(artifact);
-
- if (!excludeList.contains(id))
- {
- if (artifact.getFile() != null)
- {
- try
- {
-
- // See: http://mail-archives.apache.org/mod_mbox/maven-dev/200511.mbox/%3c437288F4.4080003@apache.org%3e
- artifact.isSnapshot();
- install(pluginDirectoryPath, classpath, artifact.getFile(), artifact,
- pluginRepository);
- }
- catch (ArtifactInstallationException e)
- {
- throw new MojoExecutionException("Failed to copy artifact.", e);
- }
- }
- else
- {
- throw new MojoExecutionException(
- "could not find file for ".concat(artifact.getId()));
- }
- }
- }
-
- /**
- * Method description
- *
- *
- *
- * @param excludeList
- * @param line
- */
- private void parseLine(List excludeList, String line)
- {
- line = line.trim();
-
- if (StringUtils.isNotEmpty(line))
- {
- String[] parts = line.split(":");
-
- if (parts.length >= 2)
- {
- excludeList.add(parts[0].concat(":").concat(parts[1]));
- }
- }
- }
-
- /**
- * Method description
- *
- *
- * @param classpath
- * @param classpathFile
- */
- private void readClasspathFile(List classpath, File classpathFile)
- {
- try
- {
- JAXBContext context = JAXBContext.newInstance(Classpath.class);
- Unmarshaller unmarshaller = context.createUnmarshaller();
- Classpath c = (Classpath) unmarshaller.unmarshal(classpathFile);
-
- classpath.addAll(c.getClasspathElements());
- }
- catch (JAXBException ex)
- {
- throw new RuntimeException(ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @param classpath
- * @param classpathFile
- */
- private void writeClasspathFile(List classpath, File classpathFile)
- {
- Classpath c = new Classpath();
-
- c.setClasspathElements(classpath);
-
- try
- {
- JAXBContext context = JAXBContext.newInstance(Classpath.class);
- Marshaller marshaller = context.createMarshaller();
-
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
- marshaller.marshal(c, classpathFile);
- }
- catch (JAXBException ex)
- {
- throw new RuntimeException(ex);
- }
- }
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AbstractScmMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AbstractScmMojo.java
deleted file mode 100644
index cd8dc551eb..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AbstractScmMojo.java
+++ /dev/null
@@ -1,407 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.artifact.resolver.ArtifactResolver;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.project.MavenProject;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public abstract class AbstractScmMojo extends AbstractMojo
-{
-
- /**
- * Method description
- *
- *
- * @return
- */
- public ArtifactFactory getArtifactFactory()
- {
- return artifactFactory;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public ArtifactRepositoryFactory getArtifactRepositoryFactory()
- {
- return artifactRepositoryFactory;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public ArtifactResolver getArtifactResolver()
- {
- return artifactResolver;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public Set getArtifacts()
- {
- return artifacts;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public Map getAvailableRepositoryLayouts()
- {
- return availableRepositoryLayouts;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public ArtifactRepository getLocalRepository()
- {
- return localRepository;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public MavenProject getProject()
- {
- return project;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public Artifact getProjectArtifact()
- {
- return projectArtifact;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public List getRemoteRepositories()
- {
- return remoteRepositories;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getRepositoryLayout()
- {
- return repositoryLayout;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getScmHome()
- {
- return scmHome;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public WebApplication getWebApplication()
- {
- return webApplication;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param artifactFactory
- */
- public void setArtifactFactory(ArtifactFactory artifactFactory)
- {
- this.artifactFactory = artifactFactory;
- }
-
- /**
- * Method description
- *
- *
- * @param artifactRepositoryFactory
- */
- public void setArtifactRepositoryFactory(
- ArtifactRepositoryFactory artifactRepositoryFactory)
- {
- this.artifactRepositoryFactory = artifactRepositoryFactory;
- }
-
- /**
- * Method description
- *
- *
- * @param artifactResolver
- */
- public void setArtifactResolver(ArtifactResolver artifactResolver)
- {
- this.artifactResolver = artifactResolver;
- }
-
- /**
- * Method description
- *
- *
- * @param artifacts
- */
- public void setArtifacts(Set artifacts)
- {
- this.artifacts = artifacts;
- }
-
- /**
- * Method description
- *
- *
- * @param availableRepositoryLayouts
- */
- public void setAvailableRepositoryLayouts(Map availableRepositoryLayouts)
- {
- this.availableRepositoryLayouts = availableRepositoryLayouts;
- }
-
- /**
- * Method description
- *
- *
- * @param localRepository
- */
- public void setLocalRepository(ArtifactRepository localRepository)
- {
- this.localRepository = localRepository;
- }
-
- /**
- * Method description
- *
- *
- * @param project
- */
- public void setProject(MavenProject project)
- {
- this.project = project;
- }
-
- /**
- * Method description
- *
- *
- * @param projectArtifact
- */
- public void setProjectArtifact(Artifact projectArtifact)
- {
- this.projectArtifact = projectArtifact;
- }
-
- /**
- * Method description
- *
- *
- * @param remoteRepositories
- */
- public void setRemoteRepositories(List remoteRepositories)
- {
- this.remoteRepositories = remoteRepositories;
- }
-
- /**
- * Method description
- *
- *
- * @param repositoryLayout
- */
- public void setRepositoryLayout(String repositoryLayout)
- {
- this.repositoryLayout = repositoryLayout;
- }
-
- /**
- * Method description
- *
- *
- * @param scmHome
- */
- public void setScmHome(String scmHome)
- {
- this.scmHome = scmHome;
- }
-
- /**
- * Method description
- *
- *
- * @param webApplication
- */
- public void setWebApplication(WebApplication webApplication)
- {
- this.webApplication = webApplication;
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /**
- * Used to look up Artifacts in the remote repository.
- *
- * @component role="org.apache.maven.artifact.factory.ArtifactFactory"
- * @required
- * @readonly
- */
- protected ArtifactFactory artifactFactory;
-
- /**
- * @component
- */
- protected ArtifactRepositoryFactory artifactRepositoryFactory;
-
- /**
- * Used to look up Artifacts in the remote repository.
- *
- * @component role="org.apache.maven.artifact.resolver.ArtifactResolver"
- * @required
- * @readonly
- */
- protected ArtifactResolver artifactResolver;
-
- /**
- * @readonly
- * @parameter expression="${project.artifacts}"
- */
- protected Set artifacts;
-
- /**
- * @component role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout"
- */
- protected Map availableRepositoryLayouts;
-
- /**
- * @readonly
- * @parameter expression="${localRepository}"
- */
- protected ArtifactRepository localRepository;
-
- /**
- * The maven project in question.
- * @parameter expression="${project}"
- * @required
- * @readonly
- */
- protected MavenProject project;
-
- /**
- * @readonly
- * @parameter expression="${project.artifact}"
- */
- protected Artifact projectArtifact;
-
- /**
- * List of Remote Repositories used by the resolver
- *
- * @parameter expression="${project.remoteArtifactRepositories}"
- * @readonly
- * @required
- */
- protected List remoteRepositories;
-
- /**
- * @parameter
- */
- protected String repositoryLayout = "default";
-
- /**
- * @parameter expression="${scmHome}" default-value="${project.build.directory}/scm-home"
- */
- protected String scmHome;
-
- /**
- * @parameter
- */
- protected WebApplication webApplication = new WebApplication();
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AppendDependenciesMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AppendDependenciesMojo.java
deleted file mode 100644
index caf434b920..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/AppendDependenciesMojo.java
+++ /dev/null
@@ -1,428 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer. 2. Redistributions in
- * binary form must reproduce the above copyright notice, this list of
- * conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. 3. Neither the name of SCM-Manager;
- * nor the names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import org.xml.sax.SAXException;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-
-import java.net.URL;
-
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-/**
- *
- * @author Sebastian Sdorra
- * @goal append-dependencies
- * @phase process-classes
- * @requiresDependencyResolution compile+runtime
- */
-public class AppendDependenciesMojo extends AbstractMojo
-{
-
- /** Field description */
- private static final String ELEMENT_ARTIFACTID = "artifactId";
-
- /** Field description */
- private static final String ELEMENT_DEPENDENCIES = "dependencies";
-
- /** Field description */
- private static final String ELEMENT_DEPENDENCY = "dependency";
-
- /** Field description */
- private static final String ELEMENT_GROUPID = "groupId";
-
- /** Field description */
- private static final String ELEMENT_INFORMATION = "information";
-
- /** Field description */
- private static final String PLUGIN_DESCRIPTOR = "META-INF/scm/plugin.xml";
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- * @throws MojoFailureException
- */
- public void doExecute() throws MojoExecutionException, MojoFailureException
- {
- ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
-
- try
- {
- ClassLoader classLoader = ClassLoaders.createRuntimeClassLoader(project);
-
- Thread.currentThread().setContextClassLoader(classLoader);
- appendDependencies(classLoader);
- }
- catch (ParserConfigurationException ex)
- {
- throw new MojoExecutionException("could not parse plugin descriptor", ex);
- }
- catch (SAXException ex)
- {
- throw new MojoExecutionException("could not parse plugin descriptor", ex);
- }
- catch (DependencyResolutionRequiredException ex)
- {
- throw new MojoExecutionException("could not setup classloader", ex);
- }
- catch (IOException ex)
- {
- throw new MojoExecutionException("could not setup classloader", ex);
- }
- catch (TransformerException ex)
- {
- throw new MojoExecutionException("could not write plugin.xml", ex);
- }
- finally
- {
- Thread.currentThread().setContextClassLoader(oldClassLoader);
- }
- }
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- * @throws MojoFailureException
- */
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException
- {
- if (descriptor.exists())
- {
- doExecute();
- }
- else
- {
- getLog().warn(
- "no plugin descriptor found, skipping append-dependencies goal");
- }
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public File getDescriptor()
- {
- return descriptor;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public MavenProject getProject()
- {
- return project;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param descriptor
- */
- public void setDescriptor(File descriptor)
- {
- this.descriptor = descriptor;
- }
-
- /**
- * Method description
- *
- *
- * @param project
- */
- public void setProject(MavenProject project)
- {
- this.project = project;
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param classLoader
- *
- * @throws IOException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerException
- */
- private void appendDependencies(ClassLoader classLoader)
- throws IOException, ParserConfigurationException, SAXException,
- TransformerException
- {
- Set dependencies = new HashSet();
- Enumeration descriptors = classLoader.getResources(PLUGIN_DESCRIPTOR);
-
- while (descriptors.hasMoreElements())
- {
- URL url = descriptors.nextElement();
-
- appendDependency(dependencies, url);
- }
-
- if (dependencies.isEmpty())
- {
- getLog().info("no plugin dependencies found");
- }
- else
- {
- getLog().info("update plugin descriptor");
- rewritePluginDescriptor(dependencies);
- }
- }
-
- /**
- * Method description
- *
- *
- * @param dependencies
- * @param url
- *
- * @throws IOException
- * @throws ParserConfigurationException
- * @throws SAXException
- */
- private void appendDependency(Set dependencies, URL url)
- throws ParserConfigurationException, SAXException, IOException
- {
- DocumentBuilder builder =
- DocumentBuilderFactory.newInstance().newDocumentBuilder();
- InputStream is = null;
-
- try
- {
- is = url.openStream();
-
- Document doc = builder.parse(is);
-
- String pluginid = parseDescriptor(doc);
-
- if (!pluginid.equals(
- project.getGroupId().concat(":").concat(project.getArtifactId())))
- {
- dependencies.add(pluginid);
- }
-
- }
- finally
- {
- if (is != null)
- {
- is.close();
- }
- }
- }
-
- /**
- * Method description
- *
- *
- * @param doc
- *
- * @return
- */
- private String parseDescriptor(Document doc)
- {
- String id = null;
- NodeList nodeList = doc.getElementsByTagName(ELEMENT_INFORMATION);
-
- for (int i = 0; i < nodeList.getLength(); i++)
- {
- Node node = nodeList.item(i);
-
- if (isElement(node, ELEMENT_INFORMATION))
- {
- id = parseInformationNode(node);
-
- break;
- }
- }
-
- return id;
- }
-
- /**
- * Method description
- *
- *
- * @param informationNode
- *
- * @return
- */
- private String parseInformationNode(Node informationNode)
- {
- String groupid = null;
- String artifactid = null;
- NodeList nodeList = informationNode.getChildNodes();
-
- for (int i = 0; i < nodeList.getLength(); i++)
- {
- Node node = nodeList.item(i);
-
- if (isElement(node, ELEMENT_GROUPID))
- {
- groupid = node.getTextContent();
- }
- else if (isElement(node, ELEMENT_ARTIFACTID))
- {
- artifactid = node.getTextContent();
- }
- }
-
- if ((groupid == null) || (artifactid == null))
- {
- throw new RuntimeException(
- "descriptor does not contain groupid or artifactid");
- }
-
- return groupid.concat(":").concat(artifactid);
- }
-
- /**
- * Method description
- *
- *
- * @param dependencies
- *
- * @throws IOException
- * @throws ParserConfigurationException
- * @throws SAXException
- * @throws TransformerConfigurationException
- * @throws TransformerException
- */
- private void rewritePluginDescriptor(Set dependencies)
- throws SAXException, IOException, ParserConfigurationException,
- TransformerConfigurationException, TransformerException
- {
- DocumentBuilder builder =
- DocumentBuilderFactory.newInstance().newDocumentBuilder();
- Document doc = builder.parse(descriptor);
- Element dependenciesEl = doc.createElement(ELEMENT_DEPENDENCIES);
-
- doc.getDocumentElement().appendChild(dependenciesEl);
-
- for (String pluginid : dependencies)
- {
- Element dependencyEl = doc.createElement(ELEMENT_DEPENDENCY);
-
- dependencyEl.setTextContent(pluginid);
- dependenciesEl.appendChild(dependencyEl);
- }
-
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
-
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.transform(new DOMSource(doc), new StreamResult(descriptor));
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param node
- * @param name
- *
- * @return
- */
- private boolean isElement(Node node, String name)
- {
- return (node.getNodeType() == Node.ELEMENT_NODE)
- && name.equals(node.getNodeName());
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /**
- * @parameter default-value="${project.build.directory}/classes/META-INF/scm/plugin.xml"
- */
- private File descriptor;
-
- /**
- * The maven project in question.
- * @parameter expression="${project}"
- * @required
- * @readonly
- */
- private MavenProject project;
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/ClassLoaders.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/ClassLoaders.java
deleted file mode 100644
index 4ac3ec50c0..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/ClassLoaders.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer. 2. Redistributions in
- * binary form must reproduce the above copyright notice, this list of
- * conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. 3. Neither the name of SCM-Manager;
- * nor the names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.artifact.DependencyResolutionRequiredException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.project.MavenProject;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public final class ClassLoaders
-{
-
- /**
- * Constructs ...
- *
- */
- private ClassLoaders() {}
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param project
- *
- * @return
- *
- * @throws DependencyResolutionRequiredException
- * @throws MalformedURLException
- */
- @SuppressWarnings("unchecked")
- public static ClassLoader createRuntimeClassLoader(MavenProject project)
- throws DependencyResolutionRequiredException, MalformedURLException
- {
- Set urls = new HashSet<>();
-
- append(urls, project.getRuntimeClasspathElements());
- append(urls, project.getCompileClasspathElements());
-
- return URLClassLoader.newInstance(urls.toArray(new URL[urls.size()]),
- Thread.currentThread().getContextClassLoader());
- }
-
- /**
- * Method description
- *
- *
- * @param urls
- * @param elements
- *
- * @throws MalformedURLException
- */
- private static void append(Set urls, List elements)
- throws MalformedURLException
- {
- for (String element : elements)
- {
- urls.add(new File(element).toURI().toURL());
- }
- }
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/Classpath.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/Classpath.java
deleted file mode 100644
index 1c66ee7df0..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/Classpath.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-@XmlRootElement(name = "classpath")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class Classpath
-{
-
- /**
- * Method description
- *
- *
- * @return
- */
- public List getClasspathElements()
- {
- return classpathElements;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param classpathElements
- */
- public void setClasspathElements(List classpathElements)
- {
- this.classpathElements = classpathElements;
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- @XmlElement(name = "path")
- private List classpathElements = new ArrayList();
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/FixDescriptorMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/FixDescriptorMojo.java
deleted file mode 100644
index 0b4350cf27..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/FixDescriptorMojo.java
+++ /dev/null
@@ -1,352 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.MavenProject;
-
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-/**
- *
- * @author Sebastian Sdorra
- * @goal fix-descriptor
- * @phase process-resources
- */
-public class FixDescriptorMojo extends AbstractMojo
-{
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- * @throws MojoFailureException
- */
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException
- {
- if (descriptor.exists() && descriptor.isFile())
- {
- Document document = createDocument(descriptor);
-
- fixDescriptor(document);
- writeDocument(document);
- }
- else
- {
- getLog().warn("no plugin descriptor found, skipping fix-descriptor goal");
- }
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public File getDescriptor()
- {
- return descriptor;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public MavenProject getProject()
- {
- return project;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param descriptor
- */
- public void setDescriptor(File descriptor)
- {
- this.descriptor = descriptor;
- }
-
- /**
- * Method description
- *
- *
- * @param project
- */
- public void setProject(MavenProject project)
- {
- this.project = project;
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param document
- * @param parent
- * @param name
- * @param value
- */
- private void appendNode(Document document, Node parent, String name,
- String value)
- {
- if (value != null)
- {
- Element node = document.createElement(name);
-
- node.setTextContent(value);
- parent.appendChild(node);
- }
- }
-
- /**
- * Method description
- *
- *
- * @param descriptor
- *
- * @return
- *
- * @throws MojoExecutionException
- */
- private Document createDocument(File descriptor) throws MojoExecutionException
- {
- Document document = null;
-
- try
- {
- document =
- DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
- descriptor);
- }
- catch (Exception ex)
- {
- throw new MojoExecutionException("could not parse plugin descriptor");
- }
-
- return document;
- }
-
- /**
- * Method description
- *
- *
- * @param document
- */
- private void fixDescriptor(Document document)
- {
- Element rootElement = document.getDocumentElement();
- NodeList informationNodeList =
- rootElement.getElementsByTagName("information");
- Node informationNode = null;
-
- for (int i = 0; i < informationNodeList.getLength(); i++)
- {
- Node node = informationNodeList.item(i);
-
- if ("information".equals(node.getNodeName()))
- {
- informationNode = node;
-
- break;
- }
- }
-
- if (informationNode == null)
- {
- informationNode = document.createElement("information");
- rootElement.appendChild(informationNode);
- }
-
- fixDescriptorInformations(document, informationNode);
- }
-
- /**
- * Method description
- *
- *
- * @param document
- * @param informationNode
- */
- private void fixDescriptorInformations(Document document,
- Node informationNode)
- {
- boolean groupId = false;
- boolean artifactId = false;
- boolean version = false;
- boolean name = false;
- boolean url = false;
- boolean description = false;
- boolean author = false;
- NodeList children = informationNode.getChildNodes();
-
- for (int i = 0; i < children.getLength(); i++)
- {
- Node node = children.item(i);
- String nodeName = node.getNodeName();
-
- if ("groupId".equals(nodeName))
- {
- groupId = true;
- }
- else if ("artifactId".equals(nodeName))
- {
- artifactId = true;
- }
- else if ("version".equals(nodeName))
- {
- version = true;
- }
- else if ("name".equals(nodeName))
- {
- name = true;
- }
- else if ("url".equals(nodeName))
- {
- url = true;
- }
- else if ("description".equals(nodeName))
- {
- description = true;
- }
- else if ("author".equals(nodeName))
- {
- author = true;
- }
- }
-
- if (!groupId)
- {
- appendNode(document, informationNode, "groupId", project.getGroupId());
- }
-
- if (!artifactId)
- {
- appendNode(document, informationNode, "artifactId",
- project.getArtifactId());
- }
-
- if (!version)
- {
- appendNode(document, informationNode, "version", project.getVersion());
- }
-
- if (!name)
- {
- appendNode(document, informationNode, "name", project.getName());
- }
-
- if (!url)
- {
- appendNode(document, informationNode, "url", project.getUrl());
- }
-
- if (!description)
- {
- appendNode(document, informationNode, "description",
- project.getDescription());
- }
-
- // TODO handle author node
- }
-
- /**
- * Method description
- *
- *
- * @param document
- *
- * @throws MojoExecutionException
- */
- private void writeDocument(Document document) throws MojoExecutionException
- {
- try
- {
- Transformer transformer =
- TransformerFactory.newInstance().newTransformer();
-
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.transform(new DOMSource(document),
- new StreamResult(descriptor));
- }
- catch (Exception ex)
- {
- throw new MojoExecutionException("could not write plugin descriptor");
- }
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /**
- * @parameter default-value="${project.build.directory}/classes/META-INF/scm/plugin.xml"
- */
- private File descriptor;
-
- /**
- * The maven project in question.
- * @parameter expression="${project}"
- * @required
- * @readonly
- */
- private MavenProject project;
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/InstallMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/InstallMojo.java
deleted file mode 100644
index d99d776471..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/InstallMojo.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-
-import java.util.List;
-
-/**
- *
- * @author Sebastian Sdorra
- * @goal install
- * @requiresDependencyResolution runtime
- * @execute phase="package"
- */
-public class InstallMojo extends AbstractBaseScmMojo
-{
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- * @throws MojoFailureException
- */
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException
- {
- File warFile = getWebApplicationArchive();
- List excludeList = createExcludeList(warFile);
-
- installArtifacts(excludeList);
- }
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/JettyStopMonitorThread.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/JettyStopMonitorThread.java
deleted file mode 100644
index 55bb98111a..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/JettyStopMonitorThread.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.commons.io.IOUtils;
-
-import org.eclipse.jetty.server.Server;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public class JettyStopMonitorThread extends Thread
-{
-
- /** Field description */
- public static final String ADDRESS_LOCALHOST = "127.0.0.1";
-
- /** Field description */
- public static final String NAME = "JettyStopMonitor";
-
- //~--- constructors ---------------------------------------------------------
-
- /**
- * Constructs ...
- *
- *
- * @param server
- * @param stopPort
- * @param stopKey
- */
- public JettyStopMonitorThread(Server server, int stopPort, String stopKey)
- {
- this.server = server;
- this.stopKey = stopKey;
- setDaemon(true);
- setName(NAME);
-
- try
- {
- socket = new ServerSocket(stopPort, 1,
- InetAddress.getByName(ADDRESS_LOCALHOST));
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- */
- @Override
- public void run()
- {
- BufferedReader reader = null;
- Socket accept = null;
-
- try
- {
- accept = socket.accept();
- reader =
- new BufferedReader(new InputStreamReader(accept.getInputStream()));
-
- String line = reader.readLine();
-
- if (stopKey.equals(line))
- {
- server.stop();
- socket.close();
- }
-
- accept.close();
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- }
- finally
- {
- IOUtils.closeQuietly(reader);
- }
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- private Server server;
-
- /** Field description */
- private ServerSocket socket;
-
- /** Field description */
- private String stopKey;
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/OpenBrowserListener.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/OpenBrowserListener.java
deleted file mode 100644
index a726775a02..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/OpenBrowserListener.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.plugin.logging.Log;
-
-import org.eclipse.jetty.util.component.LifeCycle;
-import org.eclipse.jetty.util.component.LifeCycle.Listener;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.awt.Desktop;
-
-import java.net.URI;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public class OpenBrowserListener implements Listener
-{
-
- /**
- * Constructs ...
- *
- *
- * @param log
- * @param port
- * @param contextPath
- */
- public OpenBrowserListener(Log log, int port, String contextPath)
- {
- this.log = log;
- this.port = port;
- this.contextPath = contextPath;
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param event
- * @param cause
- */
- @Override
- public void lifeCycleFailure(LifeCycle event, Throwable cause)
- {
-
- // do nothing
- }
-
- /**
- * Method description
- *
- *
- * @param event
- */
- @Override
- public void lifeCycleStarted(LifeCycle event)
- {
- new Thread(new Runnable()
- {
- @Override
- public void run()
- {
- try
- {
- Desktop desktop = Desktop.getDesktop();
-
- desktop.browse(new URI("http://localhost:" + port + contextPath));
- }
- catch (Exception ex)
- {
- log.warn(ex);
- }
- }
- }).start();
- }
-
- /**
- * Method description
- *
- *
- * @param event
- */
- @Override
- public void lifeCycleStarting(LifeCycle event)
- {
-
- // do nothing
- }
-
- /**
- * Method description
- *
- *
- * @param event
- */
- @Override
- public void lifeCycleStopped(LifeCycle event)
- {
-
- // do nothing
- }
-
- /**
- * Method description
- *
- *
- * @param event
- */
- @Override
- public void lifeCycleStopping(LifeCycle event)
- {
-
- // do nothing
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- private String contextPath;
-
- /** Field description */
- private Log log;
-
- /** Field description */
- private int port;
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/PackageMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/PackageMojo.java
deleted file mode 100644
index fa449fda37..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/PackageMojo.java
+++ /dev/null
@@ -1,429 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.deployer.ArtifactDeployer;
-import org.apache.maven.artifact.deployer.ArtifactDeploymentException;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-/**
- * @author Sebastian Sdorra
- * @goal package
- * @requiresDependencyResolution runtime
- * @execute phase="package"
- */
-public class PackageMojo extends AbstractBaseScmMojo
-{
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- * @throws MojoFailureException
- */
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException
- {
- File warFile = getWebApplicationArchive();
- List excludeList = createExcludeList(warFile);
-
- deployToDirectory(excludeList);
- copyDescriptor();
- createPackage();
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public ArtifactDeployer getDeployer()
- {
- return deployer;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public File getDescriptor()
- {
- return descriptor;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public File getPackageDirectory()
- {
- return packageDirectory;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public File getPackageFile()
- {
- return packageFile;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param deployer
- */
- public void setDeployer(ArtifactDeployer deployer)
- {
- this.deployer = deployer;
- }
-
- /**
- * Method description
- *
- *
- * @param descriptor
- */
- public void setDescriptor(File descriptor)
- {
- this.descriptor = descriptor;
- }
-
- /**
- * Method description
- *
- *
- * @param packageDirectory
- */
- public void setPackageDirectory(File packageDirectory)
- {
- this.packageDirectory = packageDirectory;
- }
-
- /**
- * Method description
- *
- *
- * @param packageFile
- */
- public void setPackageFile(File packageFile)
- {
- this.packageFile = packageFile;
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param zout
- * @param baseDirectory
- * @param baseDirectoryLength
- * @param file
- *
- * @throws IOException
- */
- private void appendFile(ZipOutputStream zout, int baseDirectoryLength,
- File file)
- throws IOException
- {
- if (file.isDirectory())
- {
- for (File f : file.listFiles())
- {
- appendFile(zout, baseDirectoryLength, f);
- }
- }
- else
- {
- InputStream input = null;
- ZipEntry entry =
- new ZipEntry(file.getAbsolutePath().substring(baseDirectoryLength));
-
- try
- {
- input = new FileInputStream(file);
-
- zout.putNextEntry(entry);
- IOUtils.copy(input, zout);
- }
- finally
- {
-
- IOUtils.closeQuietly(input);
- }
-
- zout.closeEntry();
- }
- }
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- */
- private void copyDescriptor() throws MojoExecutionException
- {
- try
- {
- File packageDescriptorFile = new File(packageDirectory, "plugin.xml");
-
- FileUtils.copyFile(descriptor, packageDescriptorFile);
- }
- catch (IOException ex)
- {
- throw new MojoExecutionException("could not copy descriptor", ex);
- }
- }
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- */
- private void createPackage() throws MojoExecutionException
- {
-
- ZipOutputStream zout = null;
-
- try
- {
- zout = new ZipOutputStream(new FileOutputStream(packageFile));
- appendFile(zout, packageDirectory.getAbsolutePath().length() + 1,
- packageDirectory);
-
- }
- catch (IOException ex)
- {
- throw new MojoExecutionException("could not create package", ex);
- }
- finally
- {
- IOUtils.closeQuietly(zout);
- }
-
- }
-
- /**
- * Method description
- *
- *
- * @param excludeList
- *
- * @throws MojoExecutionException
- */
- private void deployToDirectory(List excludeList)
- throws MojoExecutionException
- {
-
- Artifact pluginArtifact = getPluginArtifact();
-
- try
- {
- ArtifactRepository deploymentRepository = getDeploymentRepository();
- ArtifactMetadata metadata = new ProjectArtifactMetadata(pluginArtifact,
- pomFile);
-
- pluginArtifact.addMetadata(metadata);
-
- deployToDirectory(excludeList, deploymentRepository, pluginArtifact,
- false);
-
- for (Artifact artifact : artifacts)
- {
- deployToDirectory(excludeList, deploymentRepository, artifact, true);
- }
-
- }
- catch (IOException ex)
- {
- throw new MojoExecutionException("could not create deloy repository", ex);
- }
- catch (ArtifactDeploymentException ex)
- {
- throw new MojoExecutionException("could not create deloy artifcat", ex);
- }
- }
-
- /**
- * Method description
- *
- *
- *
- * @param excludeList
- * @param deploymentRepository
- * @param artifact
- * @param resolveMetadata
- *
- * @throws ArtifactDeploymentException
- */
- private void deployToDirectory(List excludeList,
- ArtifactRepository deploymentRepository, Artifact artifact,
- boolean resolveMetadata)
- throws ArtifactDeploymentException
- {
- String id = getId(artifact);
-
- if (!excludeList.contains(id))
- {
- artifact.isSnapshot();
-
- if (resolveMetadata)
- {
- String path = localRepository.pathOf(artifact);
- int lastIndex = path.lastIndexOf('.');
-
- if (lastIndex > 0)
- {
- path = path.substring(0, lastIndex).concat(".pom");
-
- File pom = new File(localRepository.getBasedir(), path);
-
- if (pom.exists())
- {
- ArtifactMetadata metadata = new ProjectArtifactMetadata(artifact,
- pom);
-
- artifact.addMetadata(metadata);
- }
- else
- {
- getLog().warn("could not find pom at ".concat(path));
- }
- }
- }
-
- File file = artifact.getFile();
-
- deployer.deploy(file, artifact, deploymentRepository, localRepository);
- }
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- *
- * @throws IOException
- * @throws MojoExecutionException
- */
- private ArtifactRepository getDeploymentRepository()
- throws IOException, MojoExecutionException
- {
-
- ArtifactRepositoryLayout artifactRepositoryLayout =
- availableRepositoryLayouts.get(repositoryLayout);
-
- if (artifactRepositoryLayout == null)
- {
- throw new MojoExecutionException(
- "could not find repository layout ".concat(repositoryLayout));
- }
-
- return artifactRepositoryFactory.createDeploymentArtifactRepository(
- "package.repository",
- "file://".concat(packageDirectory.getAbsolutePath()),
- artifactRepositoryLayout, true);
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /**
- * @component
- */
- private ArtifactDeployer deployer;
-
- /**
- * @parameter default-value="${project.build.directory}/classes/META-INF/scm/plugin.xml"
- */
- private File descriptor;
-
- /**
- * @parameter expression="${packageDirectory}" default-value="${project.build.directory}/${project.artifactId}-${project.version}-package"
- */
- private File packageDirectory;
-
- /**
- * @parameter expression="${packageFile}" default-value="${project.build.directory}/${project.artifactId}-${project.version}.scmp"
- */
- private File packageFile;
-
- /**
- * @parameter default-value="${project.file}"
- * @required
- * @readonly
- */
- private File pomFile;
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/RunMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/RunMojo.java
deleted file mode 100644
index dc39f442a2..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/RunMojo.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.webapp.WebAppContext;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.awt.Desktop;
-
-import java.io.File;
-
-import java.util.List;
-
-/**
- *
- * @author Sebastian Sdorra
- * @goal run
- * @requiresDependencyResolution runtime
- * @execute phase="package"
- */
-public class RunMojo extends AbstractBaseScmMojo
-{
-
- /** Field description */
- public static final int HEADERBUFFERSIZE = 16384;
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- * @throws MojoFailureException
- */
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException
- {
- File warFile = getWebApplicationArchive();
- List excludeList = createExcludeList(warFile);
-
- installArtifacts(excludeList);
- runServletContainer(warFile);
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getContextPath()
- {
- return contextPath;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getLoggingConfiguration()
- {
- return loggingConfiguration;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public int getPort()
- {
- return port;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getStage()
- {
- return stage;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getStopKey()
- {
- return stopKey;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public int getStopPort()
- {
- return stopPort;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public boolean isBackgroud()
- {
- return backgroud;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public boolean isOpenBrowser()
- {
- return openBrowser;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param backgroud
- */
- public void setBackgroud(boolean backgroud)
- {
- this.backgroud = backgroud;
- }
-
- /**
- * Method description
- *
- *
- * @param contextPath
- */
- public void setContextPath(String contextPath)
- {
- this.contextPath = contextPath;
- }
-
- /**
- * Method description
- *
- *
- * @param loggingConfiguration
- */
- public void setLoggingConfiguration(String loggingConfiguration)
- {
- this.loggingConfiguration = loggingConfiguration;
- }
-
- /**
- * Method description
- *
- *
- *
- * @param openBrowser
- */
- public void setOpenBrowser(boolean openBrowser)
- {
- this.openBrowser = openBrowser;
- }
-
- /**
- * Method description
- *
- *
- * @param port
- */
- public void setPort(int port)
- {
- this.port = port;
- }
-
- /**
- * Method description
- *
- *
- * @param stage
- */
- public void setStage(String stage)
- {
- this.stage = stage;
- }
-
- /**
- * Method description
- *
- *
- * @param stopKey
- */
- public void setStopKey(String stopKey)
- {
- this.stopKey = stopKey;
- }
-
- /**
- * Method description
- *
- *
- * @param stopPort
- */
- public void setStopPort(int stopPort)
- {
- this.stopPort = stopPort;
- }
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param warFile
- *
- * @throws MojoFailureException
- *
- * @throws MojoExecutionException
- */
- private void runServletContainer(File warFile) throws MojoExecutionException
- {
- getLog().info("start servletcontainer at port " + port);
-
- try
- {
- System.setProperty("scm.home", scmHome);
- System.setProperty("scm.stage", stage);
- System.out.println("SET STAGE " + stage);
-
- if (loggingConfiguration == null)
- {
- loggingConfiguration = loggginConfiguration;
- }
-
- // enable debug logging
- System.setProperty("logback.configurationFile", loggingConfiguration);
-
- Server server = new Server();
- SelectChannelConnector connector = new SelectChannelConnector();
-
- connector.setRequestHeaderSize(HEADERBUFFERSIZE);
-
- if (openBrowser && Desktop.isDesktopSupported())
- {
- connector.addLifeCycleListener(new OpenBrowserListener(getLog(), port,
- contextPath));
- }
-
- connector.setPort(port);
- server.addConnector(connector);
-
- WebAppContext warContext = new WebAppContext();
-
- warContext.setContextPath(contextPath);
- warContext.setExtractWAR(true);
- warContext.setWar(warFile.getAbsolutePath());
- server.setHandler(warContext);
- new JettyStopMonitorThread(server, stopPort, stopKey).start();
- server.start();
-
- if (!backgroud)
- {
- server.join();
- }
- }
- catch (Exception ex)
- {
- throw new MojoExecutionException("could not start servletcontainer", ex);
- }
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /**
- * @parameter
- */
- private boolean backgroud = false;
-
- /**
- * @parameter
- */
- private String contextPath = "/scm";
-
- /**
- * @parameter
- */
- private String loggginConfiguration;
-
- /**
- * @parameter expression="${loggingConfiguration}" default-value="/logback.default.xml"
- */
- private String loggingConfiguration;
-
- /**
- * @parameter
- */
- private int port = 8081;
-
- /**
- * @parameter expression="${scm.stage}" default-value="DEVELOPMENT"
- */
- private String stage = "DEVELOPMENT";
-
- /**
- * @parameter
- */
- private String stopKey = "stop";
-
- /**
- * @parameter
- */
- private int stopPort = 8085;
-
- /**
- * @parameter expression="${openBrowser}" default-value="true"
- */
- private boolean openBrowser = true;
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/StopMojo.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/StopMojo.java
deleted file mode 100644
index 81fab453d5..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/StopMojo.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.commons.io.IOUtils;
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import java.net.InetAddress;
-import java.net.Socket;
-
-/**
- * @goal stop
- * @author Sebastian Sdorra
- */
-public class StopMojo extends AbstractMojo
-{
-
- /** Field description */
- public static final String ADDRESS_LOCALHOST = "127.0.0.1";
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @throws MojoExecutionException
- * @throws MojoFailureException
- */
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException
- {
- Socket socket = null;
- PrintWriter writer = null;
-
- try
- {
- socket = new Socket(InetAddress.getByName(ADDRESS_LOCALHOST), stopPort);
- writer = new PrintWriter(socket.getOutputStream());
- writer.println(stopKey);
- writer.flush();
- }
- catch (Exception ex)
- {
- getLog().warn("could not stop jetty", ex);
- }
- finally
- {
- IOUtils.closeQuietly(writer);
-
- if (socket != null)
- {
- try
- {
- socket.close();
- }
- catch (IOException ex)
- {
-
- // ignore ex
- }
- }
- }
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getStopKey()
- {
- return stopKey;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public int getStopPort()
- {
- return stopPort;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param stopKey
- */
- public void setStopKey(String stopKey)
- {
- this.stopKey = stopKey;
- }
-
- /**
- * Method description
- *
- *
- * @param stopPort
- */
- public void setStopPort(int stopPort)
- {
- this.stopPort = stopPort;
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /**
- * @parameter
- */
- private String stopKey = "stop";
-
- /**
- * @parameter
- */
- private int stopPort = 8085;
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/Util.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/Util.java
deleted file mode 100644
index 63853934af..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/Util.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-//~--- non-JDK imports --------------------------------------------------------
-
-import org.apache.maven.plugin.logging.Log;
-
-//~--- JDK imports ------------------------------------------------------------
-
-import java.io.IOException;
-
-import java.util.Scanner;
-import java.util.zip.ZipFile;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public final class Util
-{
-
- /**
- * Constructs ...
- *
- */
- private Util() {}
-
- //~--- methods --------------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param log
- * @param file
- */
- public static void close(Log log, ZipFile file)
- {
- if (file != null)
- {
- try
- {
- file.close();
- }
- catch (IOException ex)
- {
- log.warn("could not close zipfile", ex);
- }
- }
- }
-
- /**
- * Method description
- *
- *
- * @param scanner
- */
- public static void close(Scanner scanner)
- {
- if (scanner != null)
- {
- scanner.close();
- }
- }
-
- //~--- get methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param value
- *
- * @return
- */
- public static boolean isEmpty(String value)
- {
- return (value == null) || (value.trim().length() == 0);
- }
-}
diff --git a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/WebApplication.java b/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/WebApplication.java
deleted file mode 100644
index eb99098698..0000000000
--- a/scm-maven-plugins/scm-maven-plugin/src/main/java/sonia/scm/maven/WebApplication.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Copyright (c) 2010, Sebastian Sdorra
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of SCM-Manager; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://bitbucket.org/sdorra/scm-manager
- *
- */
-
-
-
-package sonia.scm.maven;
-
-/**
- *
- * @author Sebastian Sdorra
- */
-public class WebApplication
-{
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getArtifactId()
- {
- return artifactId;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getGroupId()
- {
- return groupId;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getType()
- {
- return type;
- }
-
- /**
- * Method description
- *
- *
- * @return
- */
- public String getVersion()
- {
- return version;
- }
-
- //~--- set methods ----------------------------------------------------------
-
- /**
- * Method description
- *
- *
- * @param artifactId
- */
- public void setArtifactId(String artifactId)
- {
- this.artifactId = artifactId;
- }
-
- /**
- * Method description
- *
- *
- * @param groupId
- */
- public void setGroupId(String groupId)
- {
- this.groupId = groupId;
- }
-
- /**
- * Method description
- *
- *
- * @param type
- */
- public void setType(String type)
- {
- this.type = type;
- }
-
- /**
- * Method description
- *
- *
- * @param version
- */
- public void setVersion(String version)
- {
- this.version = version;
- }
-
- //~--- fields ---------------------------------------------------------------
-
- /** Field description */
- private String artifactId = "scm-webapp";
-
- /** Field description */
- private String groupId = "sonia.scm";
-
- /** Field description */
- private String type = "war";
-
- /** Field description */
- private String version;
-}