@Mojo(name="bundle",
requiresDependencyResolution=TEST,
threadSafe=true,
defaultPhase=PACKAGE)
public class BundlePlugin
extends org.apache.maven.plugin.AbstractMojo
Modifier and Type | Field and Description |
---|---|
private org.apache.maven.archiver.MavenArchiveConfiguration |
archive
The archive configuration to use.
|
private org.apache.maven.artifact.resolver.ArtifactCollector |
artifactCollector |
protected org.apache.maven.artifact.factory.ArtifactFactory |
artifactFactory |
private org.apache.maven.artifact.metadata.ArtifactMetadataSource |
artifactMetadataSource |
protected org.apache.maven.artifact.resolver.ArtifactResolver |
artifactResolver
Artifact resolver, needed to download source jars for inclusion in classpath.
|
protected org.sonatype.plexus.build.incremental.BuildContext |
buildContext |
private java.lang.String |
buildDirectory
The directory for the generated JAR.
|
private static java.lang.String |
BUNDLE_PLUGIN_EXTENSION |
private static java.lang.String |
BUNDLE_PLUGIN_PREPEND_EXTENSION |
protected java.lang.String |
classifier
Classifier type of the bundle to be installed.
|
protected boolean |
createDependencyReducedPom
If true, remove any inlined or embedded dependencies from the resulting pom.
|
private static java.lang.String[] |
DEFAULT_INCLUDES |
protected org.apache.maven.shared.dependency.graph.DependencyGraphBuilder |
dependencyGraphBuilder
The dependency graph builder to use.
|
protected java.io.File |
dependencyReducedPomLocation
Where to put the dependency reduced pom.
|
protected java.io.File |
dumpClasspath
File where the BND class-path will be dumped
|
protected java.io.File |
dumpInstructions
File where the BND instructions will be dumped
|
private static java.lang.String[] |
EMPTY_STRING_ARRAY |
protected java.lang.String |
excludeDependencies
Comma separated list of artifactIds to exclude from the dependency classpath passed to BND (use "true" to exclude everything)
|
protected boolean |
exportScr
When true, dump the generated SCR files
|
private java.lang.String |
finalName
Final name of the bundle (without classifier or extension)
|
private java.util.Map<java.lang.String,java.lang.String> |
instructions
The BND instructions for the bundle.
|
private static java.lang.String |
LOCAL_PACKAGES |
protected org.apache.maven.artifact.repository.ArtifactRepository |
localRepository
Local maven repository.
|
private org.codehaus.plexus.archiver.manager.ArchiverManager |
m_archiverManager |
private org.apache.maven.artifact.handler.manager.ArtifactHandlerManager |
m_artifactHandlerManager |
protected org.apache.maven.shared.dependency.graph.DependencyGraphBuilder |
m_dependencyGraphBuilder |
private Maven2OsgiConverter |
m_maven2OsgiConverter
Use locally patched version for now.
|
private org.apache.maven.execution.MavenSession |
m_mavenSession |
private org.apache.maven.project.MavenProjectHelper |
m_projectHelper |
protected java.io.File |
manifestLocation
Directory where the manifest will be written
|
private static java.lang.String |
MAVEN_RESOURCES |
private static java.lang.String |
MAVEN_SOURCES |
private static java.lang.String |
MAVEN_SYMBOLICNAME |
private static java.lang.String |
MAVEN_TEST_RESOURCES |
private static java.lang.String |
MAVEN_TEST_SOURCES |
protected org.apache.maven.project.MavenProjectBuilder |
mavenProjectBuilder
ProjectBuilder, needed to create projects from the artifacts.
|
protected boolean |
niceManifest
Output a nicely formatted manifest that still respects the 72 character line limit.
|
private static java.lang.String |
NL |
private java.io.File |
outputDirectory
The directory for the generated bundles.
|
protected java.lang.String |
packaging
Packaging type of the bundle to be installed.
|
protected org.apache.maven.project.MavenProject |
project
The Maven project.
|
protected java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> |
remoteArtifactRepositories
Remote repositories which will be searched for source attachments.
|
protected java.io.File |
scrLocation
Directory where the SCR files will be written
|
protected org.apache.maven.execution.MavenSession |
session |
protected java.util.List<java.lang.String> |
supportedProjectTypes
Project types which this plugin supports.
|
protected boolean |
unpackBundle
When true, unpack the bundle contents to the outputDirectory
|
Constructor and Description |
---|
BundlePlugin() |
Modifier and Type | Method and Description |
---|---|
private static void |
addLocalPackages(java.io.File outputDirectory,
aQute.bnd.osgi.Analyzer analyzer) |
protected void |
addMavenInstructions(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph,
aQute.bnd.osgi.Builder builder) |
protected static void |
addMavenSourcePath(org.apache.maven.project.MavenProject currentProject,
aQute.bnd.osgi.Analyzer analyzer,
org.apache.maven.plugin.logging.Log log) |
protected org.apache.maven.shared.dependency.graph.DependencyNode |
buildDependencyGraph(org.apache.maven.project.MavenProject mavenProject) |
protected aQute.bnd.osgi.Builder |
buildOSGiBundle(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph,
java.util.Map<java.lang.String,java.lang.String> originalInstructions,
java.util.Properties properties,
aQute.bnd.osgi.Jar[] classpath) |
protected java.lang.String |
convertVersionToOsgi(java.lang.String version)
Convert a Maven version into an OSGi compliant version
|
private void |
createDependencyReducedPom(java.util.Set<java.lang.String> artifactsToRemove) |
private void |
doMavenMetadata(org.apache.maven.project.MavenProject currentProject,
aQute.bnd.osgi.Jar jar) |
protected static java.lang.StringBuilder |
dumpClasspath(java.util.List<aQute.bnd.osgi.Jar> classpath,
java.lang.StringBuilder buf) |
protected static java.lang.StringBuilder |
dumpInstructions(java.util.Properties properties,
java.lang.StringBuilder buf) |
protected static java.lang.StringBuilder |
dumpManifest(java.util.jar.Manifest manifest,
java.lang.StringBuilder buf) |
void |
execute() |
protected void |
execute(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph,
java.util.Map<java.lang.String,java.lang.String> originalInstructions,
java.util.Properties properties) |
protected void |
execute(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph,
java.util.Map<java.lang.String,java.lang.String> originalInstructions,
java.util.Properties properties,
aQute.bnd.osgi.Jar[] classpath) |
private static java.util.jar.Attributes |
filterAttributes(aQute.bnd.osgi.Instructions instructions,
java.util.jar.Attributes source,
java.util.Set<aQute.bnd.osgi.Instruction> nomatch) |
protected static java.io.File |
getBase(org.apache.maven.project.MavenProject currentProject) |
protected java.lang.String |
getBuildDirectory() |
protected java.lang.String |
getBundleName(org.apache.maven.project.MavenProject currentProject)
TODO this should return getMaven2Osgi().getBundleFileName( project.getArtifact() )
|
protected aQute.bnd.osgi.Jar[] |
getClasspath(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph) |
protected java.util.Properties |
getDefaultProperties(org.apache.maven.project.MavenProject currentProject) |
protected java.util.Collection<org.apache.maven.artifact.Artifact> |
getEmbeddableArtifacts(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph,
aQute.bnd.osgi.Analyzer analyzer) |
protected java.io.File |
getFile(org.apache.maven.artifact.Artifact artifact)
Get the file for an Artifact
|
private java.lang.String |
getId(org.apache.maven.artifact.Artifact artifact) |
private java.lang.String |
getId(org.apache.maven.model.Dependency dependency) |
private java.lang.String |
getId(java.lang.String groupId,
java.lang.String artifactId,
java.lang.String type,
java.lang.String classifier) |
protected Maven2OsgiConverter |
getMaven2OsgiConverter() |
protected static java.lang.String |
getMavenResourcePaths(org.apache.maven.project.MavenProject currentProject,
boolean test) |
private static java.util.List<org.apache.maven.model.Resource> |
getMavenResources(org.apache.maven.project.MavenProject currentProject,
boolean test) |
protected java.util.Set<java.lang.String> |
getOptionalPackages(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph) |
protected aQute.bnd.osgi.Builder |
getOSGiBuilder(org.apache.maven.project.MavenProject currentProject,
java.util.Map<java.lang.String,java.lang.String> originalInstructions,
java.util.Properties properties,
aQute.bnd.osgi.Jar[] classpath) |
protected java.io.File |
getOutputDirectory() |
private static java.lang.String |
getPackageName(java.lang.String filename) |
protected org.apache.maven.project.MavenProject |
getProject() |
private static java.util.Map<java.lang.String,java.lang.String> |
getProperties(org.apache.maven.model.Model projectModel,
java.lang.String prefix) |
private java.util.Collection<org.apache.maven.artifact.Artifact> |
getSelectedDependencies(org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph,
java.util.Collection<org.apache.maven.artifact.Artifact> artifacts) |
private static void |
header(java.util.Properties properties,
java.lang.String key,
java.lang.Object value) |
protected static void |
includeJava9Fixups(org.apache.maven.project.MavenProject currentProject,
aQute.bnd.osgi.Analyzer analyzer)
Downgrade the message "Classes found in the wrong directory" to a warning.
|
protected static void |
includeMavenResources(org.apache.maven.project.MavenProject currentProject,
aQute.bnd.osgi.Analyzer analyzer,
org.apache.maven.plugin.logging.Log log) |
protected boolean |
isTransitivelyOptional(java.util.HashSet<java.lang.String> optionalArtifactIds,
org.apache.maven.artifact.Artifact artifact)
Check to see if any dependency along the dependency trail of
the artifact is optional.
|
private static void |
mergeAttributes(java.util.jar.Attributes... attributesArray) |
protected static void |
mergeManifest(aQute.bnd.osgi.Instructions instructions,
java.util.jar.Manifest... manifests) |
protected void |
mergeMavenManifest(org.apache.maven.project.MavenProject currentProject,
org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph,
aQute.bnd.osgi.Builder builder) |
private static java.lang.StringBuffer |
printLicenses(java.util.List<org.apache.maven.model.License> licenses) |
protected static java.lang.String |
removeTagFromInstruction(java.lang.String instruction,
java.lang.String tag) |
protected boolean |
reportErrors(java.lang.String prefix,
aQute.bnd.osgi.Analyzer analyzer) |
protected static java.lang.String |
sanitize(java.lang.Object value) |
protected static java.util.Properties |
sanitize(java.util.Properties properties) |
protected void |
setBuildDirectory(java.lang.String _buildirectory) |
protected void |
setOutputDirectory(java.io.File _outputDirectory) |
protected static java.util.Map<java.lang.String,java.lang.String> |
transformDirectives(java.util.Map<java.lang.String,java.lang.String> originalInstructions) |
private void |
unpackBundle(java.io.File jarFile) |
boolean |
updateExcludesInDeps(org.apache.maven.project.MavenProject project,
java.util.List<org.apache.maven.model.Dependency> dependencies,
java.util.List<org.apache.maven.model.Dependency> transitiveDeps) |
@Parameter(property="manifestLocation", defaultValue="${project.build.outputDirectory}/META-INF") protected java.io.File manifestLocation
@Parameter(property="niceManifest", defaultValue="false") protected boolean niceManifest
@Parameter(property="dumpInstructions") protected java.io.File dumpInstructions
@Parameter(property="dumpClasspath") protected java.io.File dumpClasspath
@Parameter(property="unpackBundle") protected boolean unpackBundle
@Parameter(property="excludeDependencies") protected java.lang.String excludeDependencies
@Parameter(defaultValue="${project.build.finalName}") private java.lang.String finalName
@Parameter protected java.lang.String classifier
@Parameter protected java.lang.String packaging
@Parameter protected boolean createDependencyReducedPom
@Parameter(defaultValue="${basedir}/dependency-reduced-pom.xml") protected java.io.File dependencyReducedPomLocation
@Parameter(defaultValue="${project.build.outputDirectory}") protected java.io.File scrLocation
@Parameter protected boolean exportScr
@Component private org.apache.maven.project.MavenProjectHelper m_projectHelper
@Component private org.codehaus.plexus.archiver.manager.ArchiverManager m_archiverManager
@Component private org.apache.maven.artifact.handler.manager.ArtifactHandlerManager m_artifactHandlerManager
@Component protected org.apache.maven.shared.dependency.graph.DependencyGraphBuilder m_dependencyGraphBuilder
@Parameter(defaultValue="${session}", readonly=true) protected org.apache.maven.execution.MavenSession session
@Component protected org.apache.maven.project.MavenProjectBuilder mavenProjectBuilder
@Component protected org.apache.maven.shared.dependency.graph.DependencyGraphBuilder dependencyGraphBuilder
@Component private org.apache.maven.artifact.metadata.ArtifactMetadataSource artifactMetadataSource
@Component private org.apache.maven.artifact.resolver.ArtifactCollector artifactCollector
@Component protected org.apache.maven.artifact.factory.ArtifactFactory artifactFactory
@Component protected org.apache.maven.artifact.resolver.ArtifactResolver artifactResolver
@Parameter(readonly=true, required=true, defaultValue="${localRepository}") protected org.apache.maven.artifact.repository.ArtifactRepository localRepository
@Parameter(readonly=true, required=true, defaultValue="${project.remoteArtifactRepositories}") protected java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> remoteArtifactRepositories
@Parameter protected java.util.List<java.lang.String> supportedProjectTypes
@Parameter(defaultValue="${project.build.outputDirectory}") private java.io.File outputDirectory
@Parameter(defaultValue="${project.build.directory}") private java.lang.String buildDirectory
@Parameter(defaultValue="${project}", readonly=true, required=true) protected org.apache.maven.project.MavenProject project
@Parameter private java.util.Map<java.lang.String,java.lang.String> instructions
<_consumer-policy>$${range;[===,+)}<code>
</_consumer-policy>
private final Maven2OsgiConverter m_maven2OsgiConverter
@Parameter private org.apache.maven.archiver.MavenArchiveConfiguration archive
@Parameter(defaultValue="${session}", readonly=true, required=true) private org.apache.maven.execution.MavenSession m_mavenSession
@Component protected org.sonatype.plexus.build.incremental.BuildContext buildContext
private static final java.lang.String MAVEN_SYMBOLICNAME
private static final java.lang.String MAVEN_RESOURCES
private static final java.lang.String MAVEN_TEST_RESOURCES
private static final java.lang.String LOCAL_PACKAGES
private static final java.lang.String MAVEN_SOURCES
private static final java.lang.String MAVEN_TEST_SOURCES
private static final java.lang.String BUNDLE_PLUGIN_EXTENSION
private static final java.lang.String BUNDLE_PLUGIN_PREPEND_EXTENSION
private static final java.lang.String[] EMPTY_STRING_ARRAY
private static final java.lang.String[] DEFAULT_INCLUDES
private static final java.lang.String NL
protected Maven2OsgiConverter getMaven2OsgiConverter()
protected org.apache.maven.project.MavenProject getProject()
protected org.apache.maven.shared.dependency.graph.DependencyNode buildDependencyGraph(org.apache.maven.project.MavenProject mavenProject) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
public void execute() throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
Mojo.execute()
protected void execute(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph, java.util.Map<java.lang.String,java.lang.String> originalInstructions, java.util.Properties properties) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected static java.util.Map<java.lang.String,java.lang.String> transformDirectives(java.util.Map<java.lang.String,java.lang.String> originalInstructions)
protected boolean reportErrors(java.lang.String prefix, aQute.bnd.osgi.Analyzer analyzer)
protected void execute(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph, java.util.Map<java.lang.String,java.lang.String> originalInstructions, java.util.Properties properties, aQute.bnd.osgi.Jar[] classpath) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected aQute.bnd.osgi.Builder getOSGiBuilder(org.apache.maven.project.MavenProject currentProject, java.util.Map<java.lang.String,java.lang.String> originalInstructions, java.util.Properties properties, aQute.bnd.osgi.Jar[] classpath) throws java.lang.Exception
java.lang.Exception
protected static java.util.Properties sanitize(java.util.Properties properties)
protected static java.lang.String sanitize(java.lang.Object value)
protected void addMavenInstructions(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph, aQute.bnd.osgi.Builder builder) throws java.lang.Exception
java.lang.Exception
private void createDependencyReducedPom(java.util.Set<java.lang.String> artifactsToRemove) throws java.io.IOException, org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException, org.apache.maven.project.ProjectBuildingException
java.io.IOException
org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException
org.apache.maven.project.ProjectBuildingException
private java.lang.String getId(org.apache.maven.artifact.Artifact artifact)
private java.lang.String getId(org.apache.maven.model.Dependency dependency)
private java.lang.String getId(java.lang.String groupId, java.lang.String artifactId, java.lang.String type, java.lang.String classifier)
public boolean updateExcludesInDeps(org.apache.maven.project.MavenProject project, java.util.List<org.apache.maven.model.Dependency> dependencies, java.util.List<org.apache.maven.model.Dependency> transitiveDeps) throws org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException
org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException
protected aQute.bnd.osgi.Builder buildOSGiBundle(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph, java.util.Map<java.lang.String,java.lang.String> originalInstructions, java.util.Properties properties, aQute.bnd.osgi.Jar[] classpath) throws java.lang.Exception
java.lang.Exception
protected static java.lang.StringBuilder dumpInstructions(java.util.Properties properties, java.lang.StringBuilder buf)
protected static java.lang.StringBuilder dumpClasspath(java.util.List<aQute.bnd.osgi.Jar> classpath, java.lang.StringBuilder buf)
protected static java.lang.StringBuilder dumpManifest(java.util.jar.Manifest manifest, java.lang.StringBuilder buf)
protected static void includeMavenResources(org.apache.maven.project.MavenProject currentProject, aQute.bnd.osgi.Analyzer analyzer, org.apache.maven.plugin.logging.Log log)
protected void mergeMavenManifest(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph, aQute.bnd.osgi.Builder builder) throws java.lang.Exception
java.lang.Exception
protected static void mergeManifest(aQute.bnd.osgi.Instructions instructions, java.util.jar.Manifest... manifests) throws java.io.IOException
java.io.IOException
private static java.util.jar.Attributes filterAttributes(aQute.bnd.osgi.Instructions instructions, java.util.jar.Attributes source, java.util.Set<aQute.bnd.osgi.Instruction> nomatch)
Analyzer.filter(aQute.bnd.osgi.Instructions, aQute.bnd.osgi.Packages, java.util.Set<aQute.bnd.osgi.Instruction>)
private static void mergeAttributes(java.util.jar.Attributes... attributesArray) throws java.io.IOException
java.io.IOException
protected java.util.Set<java.lang.String> getOptionalPackages(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph) throws java.io.IOException, org.apache.maven.plugin.MojoExecutionException
java.io.IOException
org.apache.maven.plugin.MojoExecutionException
protected boolean isTransitivelyOptional(java.util.HashSet<java.lang.String> optionalArtifactIds, org.apache.maven.artifact.Artifact artifact)
artifact
- private void unpackBundle(java.io.File jarFile)
protected static java.lang.String removeTagFromInstruction(java.lang.String instruction, java.lang.String tag)
private static java.util.Map<java.lang.String,java.lang.String> getProperties(org.apache.maven.model.Model projectModel, java.lang.String prefix)
private static java.lang.StringBuffer printLicenses(java.util.List<org.apache.maven.model.License> licenses)
private void doMavenMetadata(org.apache.maven.project.MavenProject currentProject, aQute.bnd.osgi.Jar jar) throws java.io.IOException
jar
- java.io.IOException
protected aQute.bnd.osgi.Jar[] getClasspath(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph) throws java.io.IOException, org.apache.maven.plugin.MojoExecutionException
java.io.IOException
org.apache.maven.plugin.MojoExecutionException
private java.util.Collection<org.apache.maven.artifact.Artifact> getSelectedDependencies(org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph, java.util.Collection<org.apache.maven.artifact.Artifact> artifacts) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected java.io.File getFile(org.apache.maven.artifact.Artifact artifact)
artifact
- private static void header(java.util.Properties properties, java.lang.String key, java.lang.Object value)
protected java.lang.String convertVersionToOsgi(java.lang.String version)
version
- Maven versionprotected java.lang.String getBundleName(org.apache.maven.project.MavenProject currentProject)
protected java.lang.String getBuildDirectory()
protected void setBuildDirectory(java.lang.String _buildirectory)
protected java.util.Properties getDefaultProperties(org.apache.maven.project.MavenProject currentProject)
protected static java.io.File getBase(org.apache.maven.project.MavenProject currentProject)
protected java.io.File getOutputDirectory()
protected void setOutputDirectory(java.io.File _outputDirectory)
private static void addLocalPackages(java.io.File outputDirectory, aQute.bnd.osgi.Analyzer analyzer) throws java.io.IOException
java.io.IOException
private static java.lang.String getPackageName(java.lang.String filename)
private static java.util.List<org.apache.maven.model.Resource> getMavenResources(org.apache.maven.project.MavenProject currentProject, boolean test)
protected static java.lang.String getMavenResourcePaths(org.apache.maven.project.MavenProject currentProject, boolean test)
protected java.util.Collection<org.apache.maven.artifact.Artifact> getEmbeddableArtifacts(org.apache.maven.project.MavenProject currentProject, org.apache.maven.shared.dependency.graph.DependencyNode dependencyGraph, aQute.bnd.osgi.Analyzer analyzer) throws org.apache.maven.plugin.MojoExecutionException
org.apache.maven.plugin.MojoExecutionException
protected static void addMavenSourcePath(org.apache.maven.project.MavenProject currentProject, aQute.bnd.osgi.Analyzer analyzer, org.apache.maven.plugin.logging.Log log)
protected static void includeJava9Fixups(org.apache.maven.project.MavenProject currentProject, aQute.bnd.osgi.Analyzer analyzer)