Github user mattf-horton commented on a diff in the pull request:

    https://github.com/apache/metron/pull/530#discussion_r129735313
  
    --- Diff: 
bundles-maven-plugin/src/main/java/org/apache/metron/BundleMojo.java ---
    @@ -0,0 +1,742 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one or more
    + * contributor license agreements.  See the NOTICE file distributed with
    + * this work for additional information regarding copyright ownership.
    + * The ASF licenses this file to You under the Apache License, Version 2.0
    + * (the "License"); you may not use this file except in compliance with
    + * the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.metron;
    +
    +import java.io.File;
    +import java.io.IOException;
    +import java.text.SimpleDateFormat;
    +import java.util.Date;
    +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 Metron Bundle Archive 
(BUNDLE).
    + * Apache Metron Bundles are based on Apache Nifi Archives (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 = "bundle", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = 
false, requiresDependencyResolution = ResolutionScope.RUNTIME)
    +public class BundleMojo extends AbstractMojo {
    +
    +    private static final String[] DEFAULT_EXCLUDES = new 
String[]{"**/package.html"};
    +    private static final String[] DEFAULT_INCLUDES = new String[]{"**/**"};
    +
    +    private static final String BUILD_TIMESTAMP_FORMAT = 
"yyyy-MM-dd'T'HH:mm:ss'Z'";
    +
    +    /**
    +     * 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 = "bundleName", property = "bundle.finalName", 
defaultValue = "${project.build.finalName}", required = true)
    +    protected String finalName;
    +    /**
    +     * Name of the prefix for package identifiers like Nar-Id, where Nar 
is the identifier
    +     */
    +    @Parameter(alias = "packageIDPrefix", property = 
"bundle.packageIDPrefix", defaultValue = "Bundle", required = true)
    +    protected String packageIDPrefix;
    +
    +    /**
    +     * 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 = "bundle.useDefaultManifestFile", defaultValue = 
"false")
    +    protected boolean useDefaultManifestFile;
    +
    +    @Component
    +    protected MavenProjectHelper projectHelper;
    +
    +    /**
    +     * Whether creating the archive should be forced.
    +     *
    +     */
    +    @Parameter(property = "bundle.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,bundle
    +     *
    +     */
    +    @Parameter(property = "type", required = false, defaultValue = 
"bundle")
    +    protected String type;
    --- End diff --
    
    I am uncomfortable with the name "type" in this usage.  Something with 
"classifier" (or "extension"?) in it would be better.  Perhaps 
packageClassifier/packageExtension (following the lead of the other non-nar 
parameter, packageIDPrefix)?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to