Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7038122a2c | ||
|
|
d0cb229d81 | ||
|
|
dec44cf623 | ||
|
|
e3626bdbf8 | ||
|
|
85dba196a0 | ||
|
|
8ede035b2a | ||
|
|
9b080710a1 | ||
|
|
0a69deb73a | ||
|
|
80e03c558b | ||
|
|
e7f2c1da67 |
@@ -8,17 +8,25 @@
|
||||
|
||||
<groupId>com.inteligr8.alfresco</groupId>
|
||||
<artifactId>amp-plugin</artifactId>
|
||||
<version>1.0.1</version>
|
||||
<version>1.0.4</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
|
||||
<name>A Maven plugin to generate AMP files</name>
|
||||
<description>Generate Alfresco Module Packages (AMP) files in a way simialr to WAR files</description>
|
||||
|
||||
<scm>
|
||||
<url>https://bitbucket.org/inteligr8/maven-amp-plugin</url>
|
||||
</scm>
|
||||
<organization>
|
||||
<name>Inteligr8</name>
|
||||
<url>https://www.inteligr8.com</url>
|
||||
</organization>
|
||||
<developers>
|
||||
<developer>
|
||||
<id>brian.long</id>
|
||||
<name>Brian Long</name>
|
||||
<email>brian@inteligr8.com</email>
|
||||
<url>https://twitter.com/brianmlong</url>
|
||||
</developer>
|
||||
</developers>
|
||||
|
||||
@@ -83,7 +91,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-plugin-plugin</artifactId>
|
||||
<version>3.6.0</version>
|
||||
<version>3.6.1</version>
|
||||
<configuration>
|
||||
<goalPrefix>amp</goalPrefix>
|
||||
</configuration>
|
||||
@@ -109,7 +117,7 @@
|
||||
<repository>
|
||||
<id>inteligr8-releases</id>
|
||||
<name>Inteligr8 Releases</name>
|
||||
<url>http://repos.yateslong.us/nexus/repository/inteligr8-public</url>
|
||||
<url>http://repos.inteligr8.com/nexus/repository/inteligr8-public</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -12,8 +13,12 @@ import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
|
||||
import org.apache.maven.plugin.logging.Log;
|
||||
import org.eclipse.aether.artifact.Artifact;
|
||||
import org.eclipse.aether.graph.DependencyFilter;
|
||||
import org.eclipse.aether.graph.DependencyNode;
|
||||
import org.eclipse.aether.resolution.ArtifactRequest;
|
||||
import org.eclipse.aether.resolution.ArtifactResolutionException;
|
||||
import org.eclipse.aether.resolution.ArtifactResult;
|
||||
|
||||
public class AmpDependencyFilter implements DependencyFilter {
|
||||
|
||||
@@ -21,22 +26,42 @@ public class AmpDependencyFilter implements DependencyFilter {
|
||||
private final int streamBufferSize = 16 * 1024;
|
||||
private final Log log;
|
||||
private final Charset charset;
|
||||
private final ArtifactResolutionCallback callback;
|
||||
|
||||
public AmpDependencyFilter(Log log, String charsetName) {
|
||||
public AmpDependencyFilter(Log log, String charsetName, ArtifactResolutionCallback callback) {
|
||||
this.log = log;
|
||||
this.charset = Charset.forName(charsetName);
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(DependencyNode node, List<DependencyNode> parents) {
|
||||
File file = node.getArtifact().getFile();
|
||||
Artifact artifact = node.getArtifact();
|
||||
if (this.log.isDebugEnabled())
|
||||
this.log.debug("Checking dependency: " + artifact.getArtifactId());
|
||||
File file = artifact.getFile();
|
||||
try {
|
||||
if (file == null) {
|
||||
if (this.log.isDebugEnabled())
|
||||
this.log.debug("Resolving dependency: " + artifact.getArtifactId());
|
||||
ArtifactResult result = this.callback.resolveArtifact(new ArtifactRequest(node));
|
||||
if (result.isMissing() || !result.isResolved())
|
||||
throw new ArtifactResolutionException(Arrays.asList(result));
|
||||
artifact = result.getArtifact();
|
||||
file = artifact.getFile();
|
||||
}
|
||||
if (this.log.isDebugEnabled())
|
||||
this.log.debug("Checking dependency file: " + file);
|
||||
|
||||
if (this.isAlfrescoModule(file)) {
|
||||
if (this.log.isInfoEnabled())
|
||||
this.log.info("Not packaging JAR; detected as Alfresco JAR Module: " + node.getArtifact().getArtifactId());
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (ArtifactResolutionException are) {
|
||||
this.log.warn("An artifact could not be resolved; assuming it is not an Alfresco module and continuing");
|
||||
return true;
|
||||
} catch (IOException ie) {
|
||||
this.log.warn("An I/O issue occurred while inspecting a JAR to see if it is an Alfresco module; assuming it isn't and continuing");
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package com.inteligr8.alfresco.amp;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.ArrayList;
|
||||
@@ -36,6 +37,10 @@ import org.codehaus.plexus.component.annotations.Requirement;
|
||||
import org.codehaus.plexus.util.FileUtils;
|
||||
import org.codehaus.plexus.util.IOUtil;
|
||||
import org.eclipse.aether.graph.Dependency;
|
||||
import org.eclipse.aether.impl.ArtifactResolver;
|
||||
import org.eclipse.aether.resolution.ArtifactRequest;
|
||||
import org.eclipse.aether.resolution.ArtifactResolutionException;
|
||||
import org.eclipse.aether.resolution.ArtifactResult;
|
||||
import org.eclipse.aether.util.filter.DependencyFilterUtils;
|
||||
import org.eclipse.aether.util.filter.ExclusionsDependencyFilter;
|
||||
import org.eclipse.aether.util.filter.ScopeDependencyFilter;
|
||||
@@ -43,7 +48,7 @@ import org.eclipse.aether.util.filter.ScopeDependencyFilter;
|
||||
@Mojo( name = "amp", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = true,
|
||||
requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME )
|
||||
@Component( role = org.apache.maven.plugin.Mojo.class )
|
||||
public class AmpMojo extends AbstractMojo {
|
||||
public class AmpMojo extends AbstractMojo implements ArtifactResolutionCallback {
|
||||
|
||||
private final int streamBufferSize = 16384;
|
||||
|
||||
@@ -56,6 +61,9 @@ public class AmpMojo extends AbstractMojo {
|
||||
@Requirement
|
||||
private ProjectDependenciesResolver resolver;
|
||||
|
||||
@Requirement
|
||||
private ArtifactResolver artifactResolver;
|
||||
|
||||
@Parameter( property = "outputFile", required = true, defaultValue = "${project.build.directory}/${project.artifactId}-${project.version}.amp" )
|
||||
protected String outputAmpFile;
|
||||
|
||||
@@ -85,7 +93,7 @@ public class AmpMojo extends AbstractMojo {
|
||||
|
||||
public void execute() throws MojoExecutionException {
|
||||
if (this.skip) {
|
||||
this.getLog().debug("Skipped AMP packaging");
|
||||
this.getLog().debug("Skipped AMP package");
|
||||
return;
|
||||
}
|
||||
this.getLog().debug("Executing AMP packaging");
|
||||
@@ -223,8 +231,8 @@ public class AmpMojo extends AbstractMojo {
|
||||
|
||||
ScopeDependencyFilter scopeFilter = new ScopeDependencyFilter(Arrays.asList(includeScopes), new ArrayList<String>(0));
|
||||
ExclusionsDependencyFilter exclusionFilter = new ExclusionsDependencyFilter(this.getExclusions());
|
||||
AmpDependencyFilter ampFilter = new AmpDependencyFilter(this.getLog(), this.charsetName);
|
||||
|
||||
AmpDependencyFilter ampFilter = new AmpDependencyFilter(this.getLog(), this.charsetName, this);
|
||||
|
||||
DependencyResolutionRequest request = new DefaultDependencyResolutionRequest(this.project, this.session.getRepositorySession());
|
||||
request.setResolutionFilter(DependencyFilterUtils.andFilter(scopeFilter, exclusionFilter, ampFilter));
|
||||
|
||||
@@ -265,11 +273,12 @@ public class AmpMojo extends AbstractMojo {
|
||||
zstream.putNextEntry(new ZipEntry(filename));
|
||||
|
||||
File file = new File(directory, filename);
|
||||
FileReader freader = new FileReader(file);
|
||||
FileInputStream fistream = new FileInputStream(file);
|
||||
BufferedInputStream bistream = new BufferedInputStream(fistream, this.streamBufferSize);
|
||||
try {
|
||||
IOUtil.copy(freader, zstream);
|
||||
IOUtil.copy(bistream, zstream);
|
||||
} finally {
|
||||
freader.close();
|
||||
bistream.close();
|
||||
}
|
||||
|
||||
zstream.closeEntry();
|
||||
@@ -291,14 +300,20 @@ public class AmpMojo extends AbstractMojo {
|
||||
|
||||
zstream.putNextEntry(new ZipEntry(targetPath + file.getName()));
|
||||
|
||||
FileReader freader = new FileReader(file);
|
||||
FileInputStream fistream = new FileInputStream(file);
|
||||
BufferedInputStream bistream = new BufferedInputStream(fistream, this.streamBufferSize);
|
||||
try {
|
||||
IOUtil.copy(freader, zstream);
|
||||
IOUtil.copy(bistream, zstream);
|
||||
} finally {
|
||||
freader.close();
|
||||
bistream.close();
|
||||
}
|
||||
|
||||
|
||||
zstream.closeEntry();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArtifactResult resolveArtifact(ArtifactRequest artifactRequest) throws ArtifactResolutionException {
|
||||
return this.artifactResolver.resolveArtifact(this.session.getRepositorySession(), artifactRequest);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.inteligr8.alfresco.amp;
|
||||
|
||||
import org.eclipse.aether.resolution.ArtifactRequest;
|
||||
import org.eclipse.aether.resolution.ArtifactResolutionException;
|
||||
import org.eclipse.aether.resolution.ArtifactResult;
|
||||
|
||||
public interface ArtifactResolutionCallback {
|
||||
|
||||
ArtifactResult resolveArtifact(ArtifactRequest artifactRequest) throws ArtifactResolutionException;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user