metron-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ottobackwards <...@git.apache.org>
Subject [GitHub] metron pull request #530: METRON-777 Metron Extension System and Parser Exte...
Date Thu, 27 Jul 2017 19:14:48 GMT
Github user ottobackwards commented on a diff in the pull request:

    https://github.com/apache/metron/pull/530#discussion_r129933909
  
    --- 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.
    --- End diff --
    
    I think packageType is correct for what we want to think of it as, and expose it as to
users


---
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 infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message