mirror of https://github.com/apache/nifi.git
Fixed classpath issue affecting startup
This commit is contained in:
parent
19d4a150a8
commit
dd57a33500
|
@ -1,81 +0,0 @@
|
|||
#MAVEN_FLAGS="-Dmaven.test.skip=true"
|
||||
MAVEN_FLAGS=""
|
||||
|
||||
cd misc/nar-maven-plugin && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../../commons/nifi-parent && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../../nifi-bootstrap && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-api && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../commons/ && \
|
||||
cd nifi-stream-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../wali && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../flowfile-packager && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../core-flowfile-attributes && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../data-provenance-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../naive-search-ring-buffer && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-expression-language && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-file-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-logging-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-properties && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-security-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-socket-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nifi-web-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../processor-utilities && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../remote-communications-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../search-utils && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../../extensions/file-authorization-provider && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../../nifi-mock && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../nar-bundles/ && \
|
||||
cd nar-container-common && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../jetty-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../standard-services-api-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../ssl-context-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../distributed-cache-services-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../standard-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../hadoop-libraries-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../hadoop-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../volatile-provenance-repository-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../persistent-provenance-repository-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../framework-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../execute-script-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../monitor-threshold-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../update-attribute-bundle && \
|
||||
mvn $MAVEN_FLAGS install && \
|
||||
cd ../../assemblies/nifi
|
||||
mvn assembly:assembly
|
100
misc/pom.xml
100
misc/pom.xml
|
@ -1,100 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.apache.nifi</groupId>
|
||||
<artifactId>nar-maven-plugin</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<packaging>maven-plugin</packaging>
|
||||
<name>Apache NiFi NAR Plugin</name>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<build>
|
||||
<defaultGoal>install</defaultGoal>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.2</version>
|
||||
<configuration>
|
||||
<source>1.7</source>
|
||||
<target>1.7</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>2.5</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-plugin-plugin</artifactId>
|
||||
<version>3.3</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default-descriptor</id>
|
||||
<goals>
|
||||
<goal>descriptor</goal>
|
||||
</goals>
|
||||
<phase>process-classes</phase>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>help-descriptor</id>
|
||||
<goals>
|
||||
<goal>helpmojo</goal>
|
||||
</goals>
|
||||
<phase>process-classes</phase>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven</groupId>
|
||||
<artifactId>maven-plugin-api</artifactId>
|
||||
<version>2.0.11</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-dependency-plugin</artifactId>
|
||||
<version>2.9</version>
|
||||
<type>maven-plugin</type>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<!-- No code from maven-jar-plugin is actually used; it's included
|
||||
just to simplify the dependencies list. -->
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>2.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.plugin-tools</groupId>
|
||||
<artifactId>maven-plugin-annotations</artifactId>
|
||||
<version>3.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>nifi-releases</id>
|
||||
<url>${nifi.repo.url}</url>
|
||||
</repository>
|
||||
<snapshotRepository>
|
||||
<id>nifi-snapshots</id>
|
||||
<url>${nifi.snapshot.repo.url}</url>
|
||||
</snapshotRepository>
|
||||
</distributionManagement>
|
||||
</project>
|
|
@ -1,610 +0,0 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package nifi;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import org.apache.maven.archiver.MavenArchiveConfiguration;
|
||||
import org.apache.maven.archiver.MavenArchiver;
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.artifact.DependencyResolutionRequiredException;
|
||||
import org.apache.maven.artifact.factory.ArtifactFactory;
|
||||
import org.apache.maven.artifact.installer.ArtifactInstaller;
|
||||
import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
|
||||
import org.apache.maven.artifact.resolver.ArtifactCollector;
|
||||
import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
|
||||
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
|
||||
import org.apache.maven.artifact.resolver.ArtifactResolver;
|
||||
import org.apache.maven.plugin.AbstractMojo;
|
||||
import org.apache.maven.plugin.MojoExecutionException;
|
||||
import org.apache.maven.plugin.MojoFailureException;
|
||||
import org.apache.maven.plugin.dependency.utils.DependencyStatusSets;
|
||||
import org.apache.maven.plugin.dependency.utils.DependencyUtil;
|
||||
import org.apache.maven.plugin.dependency.utils.filters.DestFileFilter;
|
||||
import org.apache.maven.plugin.dependency.utils.resolvers.ArtifactsResolver;
|
||||
import org.apache.maven.plugin.dependency.utils.resolvers.DefaultArtifactsResolver;
|
||||
import org.apache.maven.plugin.dependency.utils.translators.ArtifactTranslator;
|
||||
import org.apache.maven.plugin.dependency.utils.translators.ClassifierTypeTranslator;
|
||||
import org.apache.maven.plugins.annotations.LifecyclePhase;
|
||||
import org.apache.maven.plugins.annotations.Mojo;
|
||||
import org.apache.maven.plugins.annotations.Parameter;
|
||||
import org.apache.maven.plugins.annotations.ResolutionScope;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.plugins.annotations.Component;
|
||||
import org.apache.maven.project.MavenProjectHelper;
|
||||
import org.apache.maven.shared.artifact.filter.collection.ArtifactFilterException;
|
||||
import org.apache.maven.shared.artifact.filter.collection.ArtifactIdFilter;
|
||||
import org.apache.maven.shared.artifact.filter.collection.ArtifactsFilter;
|
||||
import org.apache.maven.shared.artifact.filter.collection.ClassifierFilter;
|
||||
import org.apache.maven.shared.artifact.filter.collection.FilterArtifacts;
|
||||
import org.apache.maven.shared.artifact.filter.collection.GroupIdFilter;
|
||||
import org.apache.maven.shared.artifact.filter.collection.ScopeFilter;
|
||||
import org.apache.maven.shared.artifact.filter.collection.ProjectTransitivityFilter;
|
||||
import org.apache.maven.shared.artifact.filter.collection.TypeFilter;
|
||||
import org.codehaus.plexus.archiver.ArchiverException;
|
||||
import org.codehaus.plexus.archiver.jar.JarArchiver;
|
||||
import org.codehaus.plexus.archiver.jar.ManifestException;
|
||||
import org.codehaus.plexus.archiver.manager.ArchiverManager;
|
||||
import org.codehaus.plexus.util.FileUtils;
|
||||
import org.codehaus.plexus.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Packages the current project as an Apache NiFi Archive (NAR).
|
||||
*
|
||||
* The following code is derived from maven-dependencies-plugin and
|
||||
* maven-jar-plugin. The functionality of CopyDependenciesMojo and JarMojo was
|
||||
* simplified to the use case of NarMojo.
|
||||
*
|
||||
*/
|
||||
@Mojo(name = "nar", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = false, requiresDependencyResolution = ResolutionScope.RUNTIME)
|
||||
public class NarMojo extends AbstractMojo {
|
||||
|
||||
private static final String[] DEFAULT_EXCLUDES = new String[]{"**/package.html"};
|
||||
private static final String[] DEFAULT_INCLUDES = new String[]{"**/**"};
|
||||
|
||||
/**
|
||||
* POM
|
||||
*
|
||||
*/
|
||||
@Parameter(defaultValue = "${project}", readonly = true, required = true)
|
||||
protected MavenProject project;
|
||||
|
||||
@Parameter(defaultValue = "${session}", readonly = true, required = true)
|
||||
protected MavenSession session;
|
||||
|
||||
/**
|
||||
* List of files to include. Specified as fileset patterns.
|
||||
*/
|
||||
@Parameter(property = "includes")
|
||||
protected String[] includes;
|
||||
/**
|
||||
* List of files to exclude. Specified as fileset patterns.
|
||||
*/
|
||||
@Parameter(property = "excludes")
|
||||
protected String[] excludes;
|
||||
/**
|
||||
* Name of the generated NAR.
|
||||
*
|
||||
*/
|
||||
@Parameter(alias = "narName", property = "nar.finalName", defaultValue = "${project.build.finalName}", required = true)
|
||||
protected String finalName;
|
||||
|
||||
/**
|
||||
* The Jar archiver.
|
||||
*
|
||||
* \@\component role="org.codehaus.plexus.archiver.Archiver" roleHint="jar"
|
||||
*/
|
||||
@Component(role = org.codehaus.plexus.archiver.Archiver.class, hint = "jar")
|
||||
private JarArchiver jarArchiver;
|
||||
/**
|
||||
* The archive configuration to use.
|
||||
*
|
||||
* See <a
|
||||
* href="http://maven.apache.org/shared/maven-archiver/index.html">the
|
||||
* documentation for Maven Archiver</a>.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "archive")
|
||||
protected final MavenArchiveConfiguration archive = new MavenArchiveConfiguration();
|
||||
/**
|
||||
* Path to the default MANIFEST file to use. It will be used if
|
||||
* <code>useDefaultManifestFile</code> is set to <code>true</code>.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "defaultManifestFiles", defaultValue = "${project.build.outputDirectory}/META-INF/MANIFEST.MF", readonly = true, required = true)
|
||||
protected File defaultManifestFile;
|
||||
|
||||
/**
|
||||
* Set this to <code>true</code> to enable the use of the
|
||||
* <code>defaultManifestFile</code>.
|
||||
*
|
||||
* @since 2.2
|
||||
*/
|
||||
@Parameter(property = "nar.useDefaultManifestFile", defaultValue = "false")
|
||||
protected boolean useDefaultManifestFile;
|
||||
|
||||
@Component
|
||||
protected MavenProjectHelper projectHelper;
|
||||
|
||||
/**
|
||||
* Whether creating the archive should be forced.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "nar.forceCreation", defaultValue = "false")
|
||||
protected boolean forceCreation;
|
||||
|
||||
/**
|
||||
* Classifier to add to the artifact generated. If given, the artifact will
|
||||
* be an attachment instead.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "classifier")
|
||||
protected String classifier;
|
||||
|
||||
@Component
|
||||
protected ArtifactInstaller installer;
|
||||
|
||||
@Component
|
||||
protected ArtifactRepositoryFactory repositoryFactory;
|
||||
|
||||
/**
|
||||
* This only applies if the classifier parameter is used.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "mdep.failOnMissingClassifierArtifact", defaultValue = "true", required = false)
|
||||
protected boolean failOnMissingClassifierArtifact = true;
|
||||
|
||||
/**
|
||||
* Comma Separated list of Types to include. Empty String indicates include
|
||||
* everything (default).
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "includeTypes", required = false)
|
||||
protected String includeTypes;
|
||||
|
||||
/**
|
||||
* Comma Separated list of Types to exclude. Empty String indicates don't
|
||||
* exclude anything (default).
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "excludeTypes", required = false)
|
||||
protected String excludeTypes;
|
||||
|
||||
/**
|
||||
* Scope to include. An Empty string indicates all scopes (default).
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "includeScope", required = false)
|
||||
protected String includeScope;
|
||||
|
||||
/**
|
||||
* Scope to exclude. An Empty string indicates no scopes (default).
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "excludeScope", required = false)
|
||||
protected String excludeScope;
|
||||
|
||||
/**
|
||||
* Comma Separated list of Classifiers to include. Empty String indicates
|
||||
* include everything (default).
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "includeClassifiers", required = false)
|
||||
protected String includeClassifiers;
|
||||
|
||||
/**
|
||||
* Comma Separated list of Classifiers to exclude. Empty String indicates
|
||||
* don't exclude anything (default).
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "excludeClassifiers", required = false)
|
||||
protected String excludeClassifiers;
|
||||
|
||||
/**
|
||||
* Specify classifier to look for. Example: sources
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "classifier", required = false)
|
||||
protected String copyDepClassifier;
|
||||
|
||||
/**
|
||||
* Specify type to look for when constructing artifact based on classifier.
|
||||
* Example: java-source,jar,war, nar
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "type", required = false, defaultValue = "nar")
|
||||
protected String type;
|
||||
|
||||
/**
|
||||
* Comma separated list of Artifact names too exclude.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "excludeArtifacts", required = false)
|
||||
protected String excludeArtifactIds;
|
||||
|
||||
/**
|
||||
* Comma separated list of Artifact names to include.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "includeArtifacts", required = false)
|
||||
protected String includeArtifactIds;
|
||||
|
||||
/**
|
||||
* Comma separated list of GroupId Names to exclude.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "excludeArtifacts", required = false)
|
||||
protected String excludeGroupIds;
|
||||
|
||||
/**
|
||||
* Comma separated list of GroupIds to include.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "includeGroupIds", required = false)
|
||||
protected String includeGroupIds;
|
||||
|
||||
/**
|
||||
* Directory to store flag files
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "markersDirectory", required = false, defaultValue = "${project.build.directory}/dependency-maven-plugin-markers")
|
||||
protected File markersDirectory;
|
||||
|
||||
/**
|
||||
* Overwrite release artifacts
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "overWriteReleases", required = false)
|
||||
protected boolean overWriteReleases;
|
||||
|
||||
/**
|
||||
* Overwrite snapshot artifacts
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "overWriteSnapshots", required = false)
|
||||
protected boolean overWriteSnapshots;
|
||||
|
||||
/**
|
||||
* Overwrite artifacts that don't exist or are older than the source.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "overWriteIfNewer", required = false, defaultValue = "true")
|
||||
protected boolean overWriteIfNewer;
|
||||
|
||||
/**
|
||||
* Used to look up Artifacts in the remote repository.
|
||||
*/
|
||||
@Component
|
||||
protected ArtifactFactory factory;
|
||||
|
||||
/**
|
||||
* Used to look up Artifacts in the remote repository.
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
protected ArtifactResolver resolver;
|
||||
|
||||
/**
|
||||
* Artifact collector, needed to resolve dependencies.
|
||||
*
|
||||
*/
|
||||
@Component(role = org.apache.maven.artifact.resolver.ArtifactCollector.class)
|
||||
protected ArtifactCollector artifactCollector;
|
||||
|
||||
@Component(role = org.apache.maven.artifact.metadata.ArtifactMetadataSource.class)
|
||||
protected ArtifactMetadataSource artifactMetadataSource;
|
||||
|
||||
/**
|
||||
* Location of the local repository.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "localRepository", required = true, readonly = true)
|
||||
protected ArtifactRepository local;
|
||||
|
||||
/**
|
||||
* List of Remote Repositories used by the resolver
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "project.remoteArtifactRepositories", required = true, readonly = true)
|
||||
protected List remoteRepos;
|
||||
|
||||
/**
|
||||
* To look up Archiver/UnArchiver implementations
|
||||
*
|
||||
*/
|
||||
@Component
|
||||
protected ArchiverManager archiverManager;
|
||||
|
||||
/**
|
||||
* Contains the full list of projects in the reactor.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "reactorProjects", required = true, readonly = true)
|
||||
protected List reactorProjects;
|
||||
|
||||
/**
|
||||
* If the plugin should be silent.
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "silent", required = false, defaultValue = "false")
|
||||
public boolean silent;
|
||||
|
||||
/**
|
||||
* Output absolute filename for resolved artifacts
|
||||
*
|
||||
*/
|
||||
@Parameter(property = "outputAbsoluteArtifactFilename", defaultValue = "false", required = false)
|
||||
protected boolean outputAbsoluteArtifactFilename;
|
||||
|
||||
@Override
|
||||
public void execute() throws MojoExecutionException, MojoFailureException {
|
||||
copyDependencies();
|
||||
makeNar();
|
||||
}
|
||||
|
||||
private void copyDependencies() throws MojoExecutionException {
|
||||
DependencyStatusSets dss = getDependencySets(this.failOnMissingClassifierArtifact);
|
||||
Set artifacts = dss.getResolvedDependencies();
|
||||
|
||||
for (Object artifactObj : artifacts) {
|
||||
copyArtifact((Artifact) artifactObj);
|
||||
}
|
||||
|
||||
artifacts = dss.getSkippedDependencies();
|
||||
for (Object artifactOjb : artifacts) {
|
||||
Artifact artifact = (Artifact) artifactOjb;
|
||||
getLog().info(artifact.getFile().getName() + " already exists in destination.");
|
||||
}
|
||||
}
|
||||
|
||||
protected void copyArtifact(Artifact artifact) throws MojoExecutionException {
|
||||
String destFileName = DependencyUtil.getFormattedFileName(artifact, false);
|
||||
final File destDir = DependencyUtil.getFormattedOutputDirectory(false, false, false, false, false, getDependenciesDirectory(), artifact);
|
||||
final File destFile = new File(destDir, destFileName);
|
||||
copyFile(artifact.getFile(), destFile);
|
||||
}
|
||||
|
||||
protected Artifact getResolvedPomArtifact(Artifact artifact) {
|
||||
Artifact pomArtifact = this.factory.createArtifact(artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), "", "pom");
|
||||
// Resolve the pom artifact using repos
|
||||
try {
|
||||
this.resolver.resolve(pomArtifact, this.remoteRepos, this.local);
|
||||
} catch (ArtifactResolutionException | ArtifactNotFoundException e) {
|
||||
getLog().info(e.getMessage());
|
||||
}
|
||||
return pomArtifact;
|
||||
}
|
||||
|
||||
protected ArtifactsFilter getMarkedArtifactFilter() {
|
||||
return new DestFileFilter(this.overWriteReleases, this.overWriteSnapshots, this.overWriteIfNewer, false, false, false, false, false, getDependenciesDirectory());
|
||||
}
|
||||
|
||||
protected DependencyStatusSets getDependencySets(boolean stopOnFailure) throws MojoExecutionException {
|
||||
// add filters in well known order, least specific to most specific
|
||||
FilterArtifacts filter = new FilterArtifacts();
|
||||
|
||||
filter.addFilter(new ProjectTransitivityFilter(project.getDependencyArtifacts(), false));
|
||||
filter.addFilter(new ScopeFilter(this.includeScope, this.excludeScope));
|
||||
filter.addFilter(new TypeFilter(this.includeTypes, this.excludeTypes));
|
||||
filter.addFilter(new ClassifierFilter(this.includeClassifiers, this.excludeClassifiers));
|
||||
filter.addFilter(new GroupIdFilter(this.includeGroupIds, this.excludeGroupIds));
|
||||
filter.addFilter(new ArtifactIdFilter(this.includeArtifactIds, this.excludeArtifactIds));
|
||||
|
||||
// explicitly filter our nar dependencies
|
||||
filter.addFilter(new TypeFilter("", "nar"));
|
||||
|
||||
// start with all artifacts.
|
||||
Set artifacts = project.getArtifacts();
|
||||
|
||||
// perform filtering
|
||||
try {
|
||||
artifacts = filter.filter(artifacts);
|
||||
} catch (ArtifactFilterException e) {
|
||||
throw new MojoExecutionException(e.getMessage(), e);
|
||||
}
|
||||
|
||||
// transform artifacts if classifier is set
|
||||
final DependencyStatusSets status;
|
||||
if (StringUtils.isNotEmpty(copyDepClassifier)) {
|
||||
status = getClassifierTranslatedDependencies(artifacts, stopOnFailure);
|
||||
} else {
|
||||
status = filterMarkedDependencies(artifacts);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
protected DependencyStatusSets getClassifierTranslatedDependencies(Set artifacts, boolean stopOnFailure) throws MojoExecutionException {
|
||||
Set unResolvedArtifacts = new HashSet();
|
||||
Set resolvedArtifacts = artifacts;
|
||||
DependencyStatusSets status = new DependencyStatusSets();
|
||||
|
||||
// possibly translate artifacts into a new set of artifacts based on the
|
||||
// classifier and type
|
||||
// if this did something, we need to resolve the new artifacts
|
||||
if (StringUtils.isNotEmpty(copyDepClassifier)) {
|
||||
ArtifactTranslator translator = new ClassifierTypeTranslator(this.copyDepClassifier, this.type, this.factory);
|
||||
artifacts = translator.translate(artifacts, getLog());
|
||||
|
||||
status = filterMarkedDependencies(artifacts);
|
||||
|
||||
// the unskipped artifacts are in the resolved set.
|
||||
artifacts = status.getResolvedDependencies();
|
||||
|
||||
// resolve the rest of the artifacts
|
||||
ArtifactsResolver artifactsResolver = new DefaultArtifactsResolver(this.resolver, this.local,
|
||||
this.remoteRepos, stopOnFailure);
|
||||
resolvedArtifacts = artifactsResolver.resolve(artifacts, getLog());
|
||||
|
||||
// calculate the artifacts not resolved.
|
||||
unResolvedArtifacts.addAll(artifacts);
|
||||
unResolvedArtifacts.removeAll(resolvedArtifacts);
|
||||
}
|
||||
|
||||
// return a bean of all 3 sets.
|
||||
status.setResolvedDependencies(resolvedArtifacts);
|
||||
status.setUnResolvedDependencies(unResolvedArtifacts);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
protected DependencyStatusSets filterMarkedDependencies(Set artifacts) throws MojoExecutionException {
|
||||
// remove files that have markers already
|
||||
FilterArtifacts filter = new FilterArtifacts();
|
||||
filter.clearFilters();
|
||||
filter.addFilter(getMarkedArtifactFilter());
|
||||
|
||||
Set unMarkedArtifacts;
|
||||
try {
|
||||
unMarkedArtifacts = filter.filter(artifacts);
|
||||
} catch (ArtifactFilterException e) {
|
||||
throw new MojoExecutionException(e.getMessage(), e);
|
||||
}
|
||||
|
||||
// calculate the skipped artifacts
|
||||
Set skippedArtifacts = new HashSet();
|
||||
skippedArtifacts.addAll(artifacts);
|
||||
skippedArtifacts.removeAll(unMarkedArtifacts);
|
||||
|
||||
return new DependencyStatusSets(unMarkedArtifacts, null, skippedArtifacts);
|
||||
}
|
||||
|
||||
protected void copyFile(File artifact, File destFile) throws MojoExecutionException {
|
||||
try {
|
||||
getLog().info("Copying " + (this.outputAbsoluteArtifactFilename ? artifact.getAbsolutePath() : artifact.getName()) + " to " + destFile);
|
||||
FileUtils.copyFile(artifact, destFile);
|
||||
} catch (Exception e) {
|
||||
throw new MojoExecutionException("Error copying artifact from " + artifact + " to " + destFile, e);
|
||||
}
|
||||
}
|
||||
|
||||
private File getClassesDirectory() {
|
||||
final File outputDirectory = new File(project.getBasedir(), "target");
|
||||
return new File(outputDirectory, "classes");
|
||||
}
|
||||
|
||||
private File getDependenciesDirectory() {
|
||||
return new File(getClassesDirectory(), "META-INF/dependencies");
|
||||
}
|
||||
|
||||
private void makeNar() throws MojoExecutionException {
|
||||
File narFile = createArchive();
|
||||
|
||||
if (classifier != null) {
|
||||
projectHelper.attachArtifact(project, "nar", classifier, narFile);
|
||||
} else {
|
||||
project.getArtifact().setFile(narFile);
|
||||
}
|
||||
}
|
||||
|
||||
public File createArchive() throws MojoExecutionException {
|
||||
final File outputDirectory = new File(project.getBasedir(), "target");
|
||||
File narFile = getNarFile(outputDirectory, finalName, classifier);
|
||||
MavenArchiver archiver = new MavenArchiver();
|
||||
archiver.setArchiver(jarArchiver);
|
||||
archiver.setOutputFile(narFile);
|
||||
archive.setForced(forceCreation);
|
||||
|
||||
try {
|
||||
File contentDirectory = getClassesDirectory();
|
||||
if (!contentDirectory.exists()) {
|
||||
getLog().warn("NAR will be empty - no content was marked for inclusion!");
|
||||
} else {
|
||||
archiver.getArchiver().addDirectory(contentDirectory, getIncludes(), getExcludes());
|
||||
}
|
||||
|
||||
File existingManifest = defaultManifestFile;
|
||||
if (useDefaultManifestFile && existingManifest.exists() && archive.getManifestFile() == null) {
|
||||
getLog().info("Adding existing MANIFEST to archive. Found under: " + existingManifest.getPath());
|
||||
archive.setManifestFile(existingManifest);
|
||||
}
|
||||
|
||||
// automatically add the artifact id to the manifest
|
||||
archive.addManifestEntry("Nar-Id", project.getArtifactId());
|
||||
|
||||
// look for a nar dependency
|
||||
String narDependency = getNarDependency();
|
||||
if (narDependency != null) {
|
||||
archive.addManifestEntry("Nar-Dependency-Id", narDependency);
|
||||
}
|
||||
|
||||
archiver.createArchive(session, project, archive);
|
||||
return narFile;
|
||||
} catch (ArchiverException | MojoExecutionException | ManifestException | IOException | DependencyResolutionRequiredException e) {
|
||||
throw new MojoExecutionException("Error assembling NAR", e);
|
||||
}
|
||||
}
|
||||
|
||||
private String[] getIncludes() {
|
||||
if (includes != null && includes.length > 0) {
|
||||
return includes;
|
||||
}
|
||||
return DEFAULT_INCLUDES;
|
||||
}
|
||||
|
||||
private String[] getExcludes() {
|
||||
if (excludes != null && excludes.length > 0) {
|
||||
return excludes;
|
||||
}
|
||||
return DEFAULT_EXCLUDES;
|
||||
}
|
||||
|
||||
protected File getNarFile(File basedir, String finalName, String classifier) {
|
||||
if (classifier == null) {
|
||||
classifier = "";
|
||||
} else if (classifier.trim().length() > 0 && !classifier.startsWith("-")) {
|
||||
classifier = "-" + classifier;
|
||||
}
|
||||
|
||||
return new File(basedir, finalName + classifier + ".nar");
|
||||
}
|
||||
|
||||
private String getNarDependency() throws MojoExecutionException {
|
||||
String narDependency = null;
|
||||
|
||||
// get nar dependencies
|
||||
FilterArtifacts filter = new FilterArtifacts();
|
||||
filter.addFilter(new TypeFilter("nar", ""));
|
||||
|
||||
// start with all artifacts.
|
||||
Set artifacts = project.getArtifacts();
|
||||
|
||||
// perform filtering
|
||||
try {
|
||||
artifacts = filter.filter(artifacts);
|
||||
} catch (ArtifactFilterException e) {
|
||||
throw new MojoExecutionException(e.getMessage(), e);
|
||||
}
|
||||
|
||||
// ensure there is a single nar dependency
|
||||
if (artifacts.size() > 1) {
|
||||
throw new MojoExecutionException("Each NAR represents a ClassLoader. A NAR dependency allows that NAR's ClassLoader to be "
|
||||
+ "used as the parent of this NAR's ClassLoader. As a result, only a single NAR dependency is allowed.");
|
||||
} else if (artifacts.size() == 1) {
|
||||
final Artifact artifact = (Artifact) artifacts.iterator().next();
|
||||
narDependency = artifact.getArtifactId();
|
||||
}
|
||||
|
||||
return narDependency;
|
||||
}
|
||||
}
|
|
@ -1,52 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
(the "License"); you may not use this file except in compliance with
|
||||
the License. You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<component-set>
|
||||
<components>
|
||||
<component>
|
||||
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
|
||||
<role-hint>nar</role-hint>
|
||||
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
|
||||
<configuration>
|
||||
<lifecycles>
|
||||
<lifecycle>
|
||||
<id>default</id>
|
||||
<phases>
|
||||
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
|
||||
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
|
||||
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
|
||||
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
|
||||
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
|
||||
<package>org.apache.nifi:nar-maven-plugin:nar</package>
|
||||
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
|
||||
<deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
|
||||
</phases>
|
||||
</lifecycle>
|
||||
</lifecycles>
|
||||
</configuration>
|
||||
</component>
|
||||
<component>
|
||||
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
|
||||
<role-hint>nar</role-hint>
|
||||
<implementation>org.apache.maven.artifact.handler.DefaultArtifactHandler</implementation>
|
||||
<configuration>
|
||||
<type>nar</type>
|
||||
<language>java</language>
|
||||
<addedToClasspath>false</addedToClasspath>
|
||||
<includesDependencies>true</includesDependencies>
|
||||
</configuration>
|
||||
</component>
|
||||
</components>
|
||||
</component-set>
|
Loading…
Reference in New Issue