Class AbstractBndMavenPlugin

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
    Direct Known Subclasses:
    BndMavenPlugin, BndMavenTestsPlugin

    public abstract class AbstractBndMavenPlugin
    extends org.apache.maven.plugin.AbstractMojo
    • Field Summary

      Fields 
      Modifier and Type Field Description
      (package private) java.lang.String bnd
      Bnd instructions for this project specified directly in the pom file.
      (package private) java.lang.String bndfile
      File path to a bnd file containing bnd instructions for this project.
      (package private) org.sonatype.plexus.build.incremental.BuildContext buildContext  
      (package private) boolean includeClassesDir  
      protected org.slf4j.Logger logger  
      (package private) static java.lang.String MANIFEST_LAST_MODIFIED  
      (package private) static java.lang.String MARKED_FILES  
      (package private) org.apache.maven.plugin.MojoExecution mojoExecution  
      private java.lang.String outputTimestamp  
      (package private) static java.lang.String PACKAGING_JAR  
      (package private) static java.lang.String PACKAGING_WAR  
      (package private) java.util.List<java.lang.String> packagingTypes  
      (package private) org.apache.maven.project.MavenProject project  
      (package private) org.apache.maven.project.MavenProjectHelper projectHelper  
      (package private) java.io.File propertiesFile  
      (package private) org.apache.maven.settings.Settings settings  
      (package private) boolean skipIfEmpty  
      (package private) static java.lang.String SNAPSHOT  
      (package private) java.io.File targetDir  
      (package private) static java.lang.String TSTAMP  
      (package private) java.io.File warOutputDir  
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      private static java.lang.StringBuilder addHeaderAttribute​(java.lang.StringBuilder builder, java.lang.String key, java.lang.String value, char separator)  
      private static java.lang.StringBuilder addHeaderValue​(java.lang.StringBuilder builder, java.lang.String value, char separator)  
      private void addMavenMetadataToJar​(aQute.bnd.osgi.Jar bndJar)  
      private void attachArtifactToProject​(aQute.bnd.osgi.Jar bndJar)  
      private java.io.File createArtifactFile()  
      private java.lang.String createArtifactName​(org.apache.maven.artifact.Artifact artifact)  
      private org.codehaus.plexus.util.xml.Xpp3Dom defaultConfiguration()  
      void execute()  
      private void expandJar​(aQute.bnd.osgi.Jar jar, java.io.File dir)  
      abstract java.io.File getClassesDir()  
      java.util.Optional<java.lang.String> getClassifier()  
      private java.util.Optional<org.codehaus.plexus.util.xml.Xpp3Dom> getConfiguration​(java.util.List<org.apache.maven.model.Plugin> plugins)  
      abstract java.io.File getManifestPath()  
      abstract java.io.File getOutputDir()  
      abstract java.util.List<org.apache.maven.model.Resource> getResources()  
      abstract java.io.File getSourceDir()  
      java.util.Optional<java.lang.String> getType()  
      protected boolean isEmpty​(java.io.File directory)  
      abstract boolean isSkip()  
      private void loadParentProjectProperties​(aQute.bnd.osgi.Builder builder, org.apache.maven.project.MavenProject currentProject)  
      private java.io.File loadProjectProperties​(aQute.bnd.osgi.Builder builder, org.apache.maven.project.MavenProject bndProject, org.apache.maven.project.MavenProject pomProject, org.codehaus.plexus.util.xml.Xpp3Dom configuration)  
      private java.io.File loadProperties​(aQute.bnd.osgi.Builder builder)  
      private boolean manifestOutOfDate()  
      protected void processBuilder​(aQute.bnd.osgi.Builder builder)
      If a mojo needs to tweak the builder for any particular reason, do it here.
      protected void processBuildPath​(java.util.List<java.lang.Object> buildpath)
      If a mojo needs to update the buildpath for any particular reason, do it here.
      protected void reportErrorsAndWarnings​(aQute.bnd.osgi.Builder builder)  
      • Methods inherited from class org.apache.maven.plugin.AbstractMojo

        getLog, getPluginContext, setLog, setPluginContext
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • logger

        protected final org.slf4j.Logger logger
      • MANIFEST_LAST_MODIFIED

        static final java.lang.String MANIFEST_LAST_MODIFIED
        See Also:
        Constant Field Values
      • targetDir

        @Parameter(defaultValue="${project.build.directory}",
                   readonly=true)
        java.io.File targetDir
      • includeClassesDir

        @Parameter(defaultValue="true")
        boolean includeClassesDir
      • warOutputDir

        @Parameter(defaultValue="${project.build.directory}/${project.build.finalName}")
        java.io.File warOutputDir
      • project

        @Parameter(defaultValue="${project}",
                   required=true,
                   readonly=true)
        org.apache.maven.project.MavenProject project
      • settings

        @Parameter(defaultValue="${settings}",
                   readonly=true)
        org.apache.maven.settings.Settings settings
      • mojoExecution

        @Parameter(defaultValue="${mojoExecution}",
                   readonly=true)
        org.apache.maven.plugin.MojoExecution mojoExecution
      • packagingTypes

        @Parameter(property="bnd.packagingTypes",
                   defaultValue="jar,war")
        java.util.List<java.lang.String> packagingTypes
      • skipIfEmpty

        @Parameter(property="bnd.skipIfEmpty",
                   defaultValue="false")
        boolean skipIfEmpty
      • outputTimestamp

        @Parameter(defaultValue="${project.build.outputTimestamp}")
        private java.lang.String outputTimestamp
      • bndfile

        @Parameter(defaultValue="bnd.bnd")
        java.lang.String bndfile
        File path to a bnd file containing bnd instructions for this project. Defaults to bnd.bnd. The file path can be an absolute or relative to the project directory.

        The bnd instructions for this project are merged with the bnd instructions, if any, for the parent project.

      • bnd

        @Parameter
        java.lang.String bnd
        Bnd instructions for this project specified directly in the pom file. This is generally be done using a <![CDATA[]]> section. If the projects has a bnd file, then this configuration element is ignored.

        The bnd instructions for this project are merged with the bnd instructions, if any, for the parent project.

      • buildContext

        @Component
        org.sonatype.plexus.build.incremental.BuildContext buildContext
      • projectHelper

        @Component
        org.apache.maven.project.MavenProjectHelper projectHelper
      • propertiesFile

        java.io.File propertiesFile
    • Constructor Detail

      • AbstractBndMavenPlugin

        public AbstractBndMavenPlugin()
    • Method Detail

      • getSourceDir

        public abstract java.io.File getSourceDir()
      • getResources

        public abstract java.util.List<org.apache.maven.model.Resource> getResources()
      • getClassesDir

        public abstract java.io.File getClassesDir()
      • getOutputDir

        public abstract java.io.File getOutputDir()
      • getManifestPath

        public abstract java.io.File getManifestPath()
      • isSkip

        public abstract boolean isSkip()
      • getClassifier

        public java.util.Optional<java.lang.String> getClassifier()
      • getType

        public java.util.Optional<java.lang.String> getType()
      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException,
                            org.apache.maven.plugin.MojoFailureException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
        org.apache.maven.plugin.MojoFailureException
      • processBuilder

        protected void processBuilder​(aQute.bnd.osgi.Builder builder)
                               throws org.apache.maven.plugin.MojoFailureException
        If a mojo needs to tweak the builder for any particular reason, do it here.
        Parameters:
        builder - the Builder created to analyze the jar contents
        Throws:
        org.apache.maven.plugin.MojoFailureException - if an issue is encountered
      • processBuildPath

        protected void processBuildPath​(java.util.List<java.lang.Object> buildpath)
        If a mojo needs to update the buildpath for any particular reason, do it here.
        Parameters:
        buildpath - the set of jars and class directories used while analyzing the jar contents
      • addHeaderValue

        private static java.lang.StringBuilder addHeaderValue​(java.lang.StringBuilder builder,
                                                              java.lang.String value,
                                                              char separator)
      • addHeaderAttribute

        private static java.lang.StringBuilder addHeaderAttribute​(java.lang.StringBuilder builder,
                                                                  java.lang.String key,
                                                                  java.lang.String value,
                                                                  char separator)
      • attachArtifactToProject

        private void attachArtifactToProject​(aQute.bnd.osgi.Jar bndJar)
                                      throws java.lang.Exception
        Throws:
        java.lang.Exception
      • addMavenMetadataToJar

        private void addMavenMetadataToJar​(aQute.bnd.osgi.Jar bndJar)
                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • createArtifactFile

        private java.io.File createArtifactFile()
      • createArtifactName

        private java.lang.String createArtifactName​(org.apache.maven.artifact.Artifact artifact)
      • loadProperties

        private java.io.File loadProperties​(aQute.bnd.osgi.Builder builder)
                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • loadParentProjectProperties

        private void loadParentProjectProperties​(aQute.bnd.osgi.Builder builder,
                                                 org.apache.maven.project.MavenProject currentProject)
                                          throws java.lang.Exception
        Throws:
        java.lang.Exception
      • loadProjectProperties

        private java.io.File loadProjectProperties​(aQute.bnd.osgi.Builder builder,
                                                   org.apache.maven.project.MavenProject bndProject,
                                                   org.apache.maven.project.MavenProject pomProject,
                                                   org.codehaus.plexus.util.xml.Xpp3Dom configuration)
                                            throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getConfiguration

        private java.util.Optional<org.codehaus.plexus.util.xml.Xpp3Dom> getConfiguration​(java.util.List<org.apache.maven.model.Plugin> plugins)
      • defaultConfiguration

        private org.codehaus.plexus.util.xml.Xpp3Dom defaultConfiguration()
      • reportErrorsAndWarnings

        protected void reportErrorsAndWarnings​(aQute.bnd.osgi.Builder builder)
                                        throws org.apache.maven.plugin.MojoFailureException
        Throws:
        org.apache.maven.plugin.MojoFailureException
      • isEmpty

        protected boolean isEmpty​(java.io.File directory)
      • expandJar

        private void expandJar​(aQute.bnd.osgi.Jar jar,
                               java.io.File dir)
                        throws java.lang.Exception
        Throws:
        java.lang.Exception
      • manifestOutOfDate

        private boolean manifestOutOfDate()