Package aQute.bnd.osgi
Class Builder
- java.lang.Object
-
- aQute.bnd.osgi.Domain
-
- aQute.bnd.osgi.Processor
-
- aQute.bnd.osgi.Analyzer
-
- aQute.bnd.osgi.Builder
-
- All Implemented Interfaces:
Constants
,Registry
,Report
,Reporter
,java.io.Closeable
,java.lang.AutoCloseable
,java.lang.Iterable<java.lang.String>
- Direct Known Subclasses:
JUnitFramework.BundleBuilder
,ProjectBuilder
public class Builder extends Analyzer
Include-Resource: ( [name '=' ] file )+ Private-Package: package-decl ( ',' package-decl )* Export-Package: package-decl ( ',' package-decl )* Import-Package: package-decl ( ',' package-decl )* @version $Revision: 1.27 $
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class aQute.bnd.osgi.Analyzer
Analyzer.Check
-
Nested classes/interfaces inherited from class aQute.bnd.osgi.Processor
Processor.CL, Processor.FileLine, Processor.SetLocationImpl
-
Nested classes/interfaces inherited from interface aQute.service.reporter.Report
Report.Location
-
Nested classes/interfaces inherited from interface aQute.service.reporter.Reporter
Reporter.SetLocation
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static java.lang.String
_githeadHelp
private BuilderInstructions
buildInstrs
private java.util.Map<java.lang.Integer,java.lang.String>
cachedSystemCalls
(package private) static CDIAnnotations
cdiAnnotations
private Instructions
defaultPreProcessMatcher
private DiffPluginImpl
differ
(package private) static DSAnnotations
dsAnnotations
(package private) boolean
firstUse
private static java.lang.String[]
fixed
private static java.util.regex.Pattern
GITREF_P
#388 Manifest header to get GIT head Get the head commit number.private static java.util.regex.Pattern
IR_PATTERN
private static org.slf4j.Logger
logger
private Make
make
(package private) static MakeBnd
makeBnd
(package private) static MakeCopy
makeCopy
(package private) static MetatypeAnnotations
metatypeAnnotations
(package private) static JPMSAnnotations
moduleAnnotations
(package private) static JPMSModuleInfoPlugin
moduleInfoPlugin
(package private) static ServiceComponent
serviceComponent
private java.util.List<java.io.File>
sourcePath
(package private) static SPIDescriptorGenerator
spiDescriptorGenerator
private static int
SPLIT_DEFAULT
private static int
SPLIT_ERROR
private static int
SPLIT_FIRST
private static int
SPLIT_MERGE_FIRST
private static int
SPLIT_MERGE_LAST
private Tree
tree
private java.util.regex.Pattern
xdoNotCopy
-
Fields inherited from class aQute.bnd.osgi.Analyzer
_classesHelp, _md5Help, _packagesHelp, _sha1Help, bndInfo, DEFAULT_CONSUMER_POLICY, DEFAULT_PROVIDER_POLICY, fuzzyModifier, fuzzyVersion, fuzzyVersionRange, msgs, OBJECT_REFERENCE, OLD_PACKAGEINFO_SYNTAX_P
-
Fields inherited from class aQute.bnd.osgi.Processor
_frangeHelp, _uriHelp, basicPlugins, BUFFER_SIZE, current, errors, exceptions, fileMustExist, filter, fixupMessages, LIST_SPLITTER, locations, log, missingCommand, parent, pedantic, pluginLoader, profile, properties, random, strict, trace, upto, warnings
-
Fields inherited from class aQute.bnd.osgi.Domain
translation
-
Fields inherited from interface aQute.bnd.osgi.Constants
ACCESS_ATTRIBUTE, AUGMENT, AUGMENT_CAPABILITY_DIRECTIVE, AUGMENT_RANGE_ATTRIBUTE, AUGMENT_REQUIREMENT_DIRECTIVE, AUTOMATIC_MODULE_NAME, BASELINE, BASELINEREPO, BLUEPRINT_TIMEOUT_ATTRIBUTE, BLUEPRINT_WAIT_FOR_DEPENDENCIES_ATTRIBUTE, BND_ADDXMLTOTEST, BND_LASTMODIFIED, BNDDRIVER, BNDDRIVER_ANT, BNDDRIVER_BND, BNDDRIVER_ECLIPSE, BNDDRIVER_GRADLE, BNDDRIVER_GRADLE_NATIVE, BNDDRIVER_INTELLIJ, BNDDRIVER_MAVEN, BNDDRIVER_OSMORC, BNDDRIVER_SBT, BSN_SOURCE_SUFFIX, BUILDERIGNORE, BUILDFILES, BUILDPACKAGES, BUILDPATH, BUILDREPO, BUMPPOLICY, BUNDLE_ACTIVATIONPOLICY, BUNDLE_ACTIVATOR, BUNDLE_BLUEPRINT, BUNDLE_CATEGORY, BUNDLE_CLASSPATH, BUNDLE_CONTACTADDRESS, BUNDLE_CONTRIBUTORS, BUNDLE_COPYRIGHT, BUNDLE_DESCRIPTION, BUNDLE_DEVELOPERS, BUNDLE_DOCURL, BUNDLE_ICON, BUNDLE_LICENSE, BUNDLE_LOCALIZATION, BUNDLE_MANIFESTVERSION, BUNDLE_NAME, BUNDLE_NATIVECODE, BUNDLE_REQUIREDEXECUTIONENVIRONMENT, BUNDLE_SCM, BUNDLE_SPECIFIC_HEADERS, BUNDLE_SYMBOLIC_NAME_ATTRIBUTE, BUNDLE_SYMBOLICNAME, BUNDLE_UPDATELOCATION, BUNDLE_VENDOR, BUNDLE_VERSION, BUNDLE_VERSION_ATTRIBUTE, BUNDLEANNOTATIONS, CACHEDIR, CARDINALITY_DIRECTIVE, CDIANNOTATIONS, CHECK, CLASS_ATTRIBUTE, CLASSPATH, COMMAND_DIRECTIVE, COMPILER_SOURCE, COMPILER_TARGET, COMPONENT_ACTIVATE, COMPONENT_CONFIGURATION_POLICY, COMPONENT_DEACTIVATE, COMPONENT_DESCRIPTORS, COMPONENT_DESIGNATE, COMPONENT_DESIGNATEFACTORY, COMPONENT_DYNAMIC, COMPONENT_ENABLED, COMPONENT_FACTORY, COMPONENT_GREEDY, COMPONENT_IMMEDIATE, COMPONENT_IMPLEMENTATION, COMPONENT_MODIFIED, COMPONENT_MULTIPLE, COMPONENT_NAME, COMPONENT_NAMESPACE, COMPONENT_OPTIONAL, COMPONENT_PROPERTIES, COMPONENT_PROVIDE, COMPONENT_SERVICEFACTORY, COMPONENT_VERSION, componentDirectives, COMPRESSION, CONDITIONAL_PACKAGE, CONDITIONALPACKAGE, CONDUIT, CONNECTION_SETTINGS, CONSUMER_POLICY, CONTRACT, CREATED_BY, CURRENT_BUNDLESYMBOLICNAME, CURRENT_BUNDLEVERSION, CURRENT_PACKAGE, CURRENT_USES, CURRENT_VERSION, DEBUG, DEFAULT_BAR_EXTENSION, DEFAULT_BND_EXTENSION, DEFAULT_BNDRUN_EXTENSION, DEFAULT_CHARSET, DEFAULT_DO_NOT_COPY, DEFAULT_JAR_EXTENSION, DEFAULT_LAUNCHER_BSN, DEFAULT_PREPROCESSS_MATCHERS, DEFAULT_PROP_BIN_DIR, DEFAULT_PROP_SRC_DIR, DEFAULT_PROP_TARGET_DIR, DEFAULT_PROP_TESTBIN_DIR, DEFAULT_PROP_TESTSRC_DIR, DEFAULT_TESTER_BSN, DEFINE_CONTRACT, DEPENDSON, DEPLOY, DEPLOYREPO, DESCRIPTION_ATTRIBUTE, DIFFIGNORE, DIFFPACKAGES, DIGESTS, directives, DISTRO, DONOTCOPY, DSANNOTATIONS, DSANNOTATIONS_OPTIONS, DUPLICATE_MARKER, DYNAMICIMPORT_PACKAGE, EE_ATTRIBUTE, EEPROFILE, EEPROFILE_AUTO_ATTRIBUTE, EFFECTIVE_DIRECTIVE, EMBEDDED_REPO, EMPTY, EMPTY_HEADER, EXCLUDE_DIRECTIVE, EXECUTABLE, EXPERIMENTS, EXPORT, EXPORT_APIGUARDIAN, EXPORT_BSN, EXPORT_CONTENTS, EXPORT_NAME, EXPORT_PACKAGE, EXPORT_SERVICE, EXPORT_TYPE, EXPORT_VERSION, EXPORTS_ATTRIBUTE, EXPORTTYPE, EXTENSION, EXTENSION_DIRECTIVE, FAIL_OK, FILTER_DIRECTIVE, FIXUPMESSAGES, FIXUPMESSAGES_IS_DIRECTIVE, FIXUPMESSAGES_IS_ERROR, FIXUPMESSAGES_IS_IGNORE, FIXUPMESSAGES_IS_WARNING, FIXUPMESSAGES_REPLACE_DIRECTIVE, FIXUPMESSAGES_RESTRICT_DIRECTIVE, FRAGMENT_ATTACHMENT_DIRECTIVE, FRAGMENT_HOST, FROM_DIRECTIVE, GENERATE, GESTALT, GESTALT_BATCH, GESTALT_CI, GESTALT_INTERACTIVE, GESTALT_OFFLINE, GESTALT_SHELL, GROUPID, headers, IDENTITY_INITIAL_RESOURCE, IDENTITY_SYSTEM_RESOURCE, IGNORE_ATTRIBUTE, IGNORE_PACKAGE, IGNORE_STANDALONE, IMPORT_DIRECTIVE, IMPORT_PACKAGE, IMPORT_PRIVATE, IMPORT_REFERENCE, IMPORT_SERVICE, importDirectives, INCLUDE, INCLUDE_DIRECTIVE, INCLUDE_RESOURCE, INCLUDEPACKAGE, INCLUDERESOURCE, INIT, INTERNAL_BUNDLESYMBOLICNAME_DIRECTIVE, INTERNAL_BUNDLEVERSION_DIRECTIVE, INTERNAL_EXPORT_TO_MODULES_DIRECTIVE, INTERNAL_EXPORTED_DIRECTIVE, INTERNAL_MODULE_VERSION_DIRECTIVE, INTERNAL_OPEN_TO_MODULES_DIRECTIVE, INTERNAL_SOURCE_DIRECTIVE, INVALIDFILENAMES, JAVA, JAVA_DEBUG, JAVAAGENT, JAVAC, JAVAC_ENCODING, JAVAC_PROFILE, JAVAC_SOURCE, JAVAC_TARGET, JIDENTIFIER, JPMS_MODULE_INFO, JPMS_MODULE_INFO_OPTIONS, KEYSTORE_LOCATION_DIRECTIVE, KEYSTORE_PASSWORD_DIRECTIVE, KEYSTORE_PROVIDER_DIRECTIVE, LANGUAGE_ATTRIBUTE, LAUNCH_ACTIVATION_EAGER, LAUNCH_ACTIVATORS, LAUNCH_RUNBUNDLES_ATTRS, LAUNCH_STARTLEVEL_DEFAULT, LAUNCH_TRACE, LAUNCHER_PLUGIN, LIB_DIRECTIVE, LINK_ATTRIBUTE, LITERAL_ATTRIBUTE, MAIN_CLASS, MAKE, MANDATORY_DIRECTIVE, MANIFEST, MANIFEST_NAME, MAVEN_DEPENDENCIES, MAVEN_RELEASE, MAVEN_SCOPE, META_PERSISTENCE, METAPACKAGES, METATYPE, METATYPE_ANNOTATIONS, METATYPE_ANNOTATIONS_OPTIONS, MIME_TYPE_BUNDLE, MIME_TYPE_JAR, MODULE_INFO_CLASS, MODULES_ATTRIBUTE, NAME_ATTRIBUTE, NAMESECTION, NAMESPACE_STEM, NO_IMPORT_DIRECTIVE, NOANNOTATIONS, NOBUILDINCACHE, NOBUNDLES, NOCLASSFORNAME, NODEFAULTVERSION, NOEE, NOEXTRAHEADERS, NOJUNIT, NOJUNITOSGI, NOMANIFEST, NONE, NOT_A_BUNDLE_S, NOUSES, OPTIONAL, options, OSGI_SYNTAX_HEADERS, OSNAME_ATTRIBUTE, OSVERSION_ATTRIBUTE, OUTPUT, OUTPUTMASK, PACKAGE, PACKAGEINFOTYPE, PATH_DIRECTIVE, PEDANTIC, PLUGIN, PLUGINPATH, PLUGINPATH_SHA1_ATTR, PLUGINPATH_URL_ATTR, POM, PREPROCESSMATCHERS, PRESENCE_DIRECTIVE, PRIVATE_DIRECTIVE, PRIVATE_PACKAGE, PRIVATEPACKAGE, PROCESSOR_ATTRIBUTE, PROFILE, PROVIDE_CAPABILITY, PROVIDE_DIRECTIVE, PROVIDER_POLICY, PROVIDER_TYPE_DIRECTIVE, RELEASEREPO, REMOTEWORKSPACE, REMOVE_ATTRIBUTE_DIRECTIVE, REMOVEHEADERS, REPORTNEWER, REPOSITORIES, REPRODUCIBLE, REQUIRE_BND, REQUIRE_BUNDLE, REQUIRE_CAPABILITY, RESOLUTION, RESOLUTION_DIRECTIVE, RESOLUTION_DYNAMIC, RESOLVE, RESOURCEONLY, RUNBLACKLIST, RUNBUILDS, RUNBUNDLES, RUNBUNDLES_STARTLEVEL_ATTRIBUTE, RUNEE, RUNENV, RUNFRAMEWORK, RUNFRAMEWORK_NONE, RUNFRAMEWORK_SERVICES, RUNFRAMEWORKRESTART, RUNFW, RUNJDB, RUNKEEP, RUNNOREFERENCES, RUNOPTIONS, RUNOPTIONS_EAGER, RUNPATH, RUNPATH_LAUNCHER_DIRECTIVE, RUNPATH_MAIN_DIRECTIVE, RUNPROGRAMARGS, RUNPROPERTIES, RUNPROVIDEDCAPABILITIES, RUNREMOTE, RUNREPOS, RUNREQUIRE, RUNREQUIRES, RUNSTARTLEVEL, RUNSTARTLEVEL_BEGIN, RUNSTARTLEVEL_ORDER, RUNSTARTLEVEL_STEP, RUNSTORAGE, RUNSYSTEMCAPABILITIES, RUNSYSTEMPACKAGES, RUNTIMEOUT, RUNTRACE, RUNVM, SAVEMANIFEST, SELECTION_FILTER_ATTRIBUTE, SERVICE_COMPONENT, SERVICELOADER_NAMESPACE, SERVICELOADER_REGISTER_DIRECTIVE, SET_COMPONENT_DIRECTIVES, SET_COMPONENT_DIRECTIVES_1_1, SET_COMPONENT_DIRECTIVES_1_2, SIGN, SIGN_PASSWORD_DIRECTIVE, SIGNATURE_TEST, SINGLETON_DIRECTIVE, SIZE_ATTRIBUTE, SNAPSHOT, SOURCEPATH, SOURCES, SPECIFICATION_VERSION, SPLIT_PACKAGE_DIRECTIVE, STALECHECK, STANDALONE, STATIC_ATTRIBUTE, STRICT, SUB, SUBSTITUTE_ATTRIBUTE, SYSTEMPROPERTIES, TESTCASES, TESTCONTINUOUS, TESTER, TESTER_PLUGIN, TESTPACKAGES, TESTPATH, TESTREPORT, TESTSOURCES, TESTSUITES, TESTUNRESOLVED, TOOL, TRANSITIVE_ATTRIBUTE, TSTAMP, UNDERTEST, UPTO, USES_DIRECTIVE, USES_USES, VALID_PROPERTY_TYPES, VERBOSE, VERSION_ATTR_HASH, VERSION_ATTR_LATEST, VERSION_ATTR_PROJECT, VERSION_ATTR_SNAPSHOT, VERSION_ATTRIBUTE, VERSION_FILTER, VISIBILITY_DIRECTIVE, WAB, WABLIB, WORKINGSET, WORKINGSET_MEMBER
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.String
_githead(java.lang.String[] args)
java.lang.String
_maven_version(java.lang.String[] args)
A macro to convert a maven version to an OSGi versionjava.lang.String
_permissions(java.lang.String[] args)
boolean
addAll(Jar to, Jar sub, Instruction filter)
Add all the resources in the given jar that match the given filter.boolean
addAll(Jar to, Jar sub, Instruction filter, java.lang.String destination)
Add all the resources in the given jar that match the given filter.void
addSourcepath(java.io.File cp)
void
addSourcepath(java.util.Collection<java.io.File> sourcepath)
private void
addSources(Jar dot)
private void
addWabLib(Jar dot, java.io.File f, java.lang.String name, java.util.Map<java.lang.String,java.lang.String> attrs)
Add a wab lib to the jar.void
analyze()
Intercept the call to analyze and cleanup versions after we have analyzed the setup.Jar
build()
Jar[]
builds()
Build Multiple jars.protected void
changedFile(java.io.File f)
void
cleanupVersion(Packages packages, java.lang.String defaultVersion)
void
cleanupVersion(Packages packages, java.lang.String defaultVersion, java.lang.String what)
private void
copy(Jar dest, Jar srce, java.lang.String path, boolean overwrite)
Copyprivate void
copy(Jar jar, java.lang.String path, Resource resource, java.util.Map<java.lang.String,java.lang.String> extra)
private void
copy(Jar jar, java.lang.String path, java.io.File from, Instructions preprocess, java.util.Map<java.lang.String,java.lang.String> extra)
private void
copyPackage(Jar dest, java.util.List<Jar> providers, java.lang.String path, int splitStrategy)
Copy the package from the providers based on the split package strategy.private java.lang.String
diagnostic(java.lang.String pack, java.util.List<Jar> culprits)
Analyze the classpath for a split packageprotected void
doBaseline(Jar dot)
Base line against a previous version.private void
doClassAttribute(Jar jar, java.lang.String name, java.util.Map<java.lang.String,java.lang.String> extra, Instructions preprocess, boolean absentIsOk)
private void
doCommand(Jar jar, java.lang.String source, java.lang.String destination, java.util.Map<java.lang.String,java.lang.String> extra, Instructions preprocess, boolean absentIsOk)
It is possible in Include-Resource to use a system command that generates the contents, this is indicated withcmd
attribute.void
doDiff(Jar dot)
Diff this bundle to another bundle for the given packages.private void
doDigests(Jar dot)
Check if we need to calculate any checksums.private void
doExpand(Jar dot)
private java.util.Set<Instruction>
doExpand(Jar jar, MultiMap<java.lang.String,Jar> index, Instructions filter)
Destructively filter the packages from the build up index.private void
doIncludeResource(Jar jar, Parameters clauses)
private void
doIncludeResource(Jar jar, java.lang.String includes)
private void
doIncludeResource(Jar jar, java.lang.String name, java.util.Map<java.lang.String,java.lang.String> extra)
private void
doIncludeResources(Jar jar)
Parse the Bundle-Includes header.protected void
doneBuild(Builder builder)
Called when we're done with a builderboolean
doNotCopy(java.io.File from)
boolean
doNotCopy(java.lang.String v)
doNotCopy The doNotCopy variable maintains a patter for files that should not be copied.(package private) void
doPom(Jar dot)
private java.lang.String
doResourceDirectory(Jar jar, java.util.Map<java.lang.String,java.lang.String> extra, Instructions preprocess, java.io.File sourceFile, java.lang.String destinationPath)
private void
doSaveManifest(Jar dot)
Get the manifest and write it out separately if -savemanifest is setprivate java.lang.String
doSnapshot(java.lang.String version)
private void
doVerify(Jar dot)
private Jar
doWab(Jar dot)
Turn this normal bundle in a web and add any resources.private void
extractFromJar(Jar jar, java.lang.String source, java.lang.String destination, boolean absentIsOk)
Extra resources from a Jar and add them to the given jar.private java.util.List<Jar>
filterFrom(Instruction from, java.util.List<Jar> providers)
private long
findLastModifiedWhileOlder(java.io.File file, long lastModified)
Check if a file or directory is older than the given time.Builder
from(BuilderSpecification spec)
Collect the information from theBuilderSpecification
private Jar
getBuildJar()
java.lang.String
getClasspathEntrySuffix(java.io.File resource)
Answer the string of the resource that it has in the container.java.util.regex.Pattern
getDoNotCopy()
protected Jar
getExtra()
Answer extra packages.private java.util.stream.Stream<java.lang.String>
getIncludedResourcePrefixes()
Extra the paths for the directories and files that are used in the Include-Resource header.private Instructions
getPreProcessMatcher(java.util.Map<java.lang.String,java.lang.String> extra)
java.util.Collection<java.io.File>
getSourcePath()
private int
getSplitStrategy(java.lang.String type)
Builder
getSubBuilder()
Builder
getSubBuilder(java.io.File file)
java.util.List<Builder>
getSubBuilders()
Answer a list of builders that represent this file or a list of files specified in -sub.boolean
hasSources()
void
init()
Allow any local initialization by subclasses before we build.boolean
isInScope(java.util.Collection<java.io.File> resources)
Check if the given resource is in scope of this bundle.private Instruction
matches(Instructions instructions, java.lang.String pack, java.util.Set<Instruction> unused, java.lang.String source)
Matches the instructions against a package.private void
noSuchFile(Jar jar, java.lang.String clause, java.util.Map<java.lang.String,java.lang.String> extra, java.lang.String source, java.lang.String destinationPath)
private static boolean
pathStartsWith(java.lang.String path, java.lang.String prefix)
void
removeBundleSpecificHeaders()
void
report(java.util.Map<java.lang.String,java.lang.Object> table)
Create a report of the settingsprivate void
resolveFiles(java.io.File dir, java.io.FileFilter filter, boolean recursive, java.lang.String path, java.util.Map<java.lang.String,java.io.File> files, boolean flatten)
void
setSourcepath(java.io.File[] files)
protected void
setTypeSpecificPlugins(java.util.Set<java.lang.Object> list)
private void
show(Diff p, java.lang.String indent, boolean warning)
Show the diff recursively(package private) void
sign(Jar jar)
Sign the jar file.protected void
startBuild(Builder builder)
Called when we start to build a builderjava.lang.String
system(boolean allowFail, java.lang.String command, java.lang.String input)
We override system so that, for the duration of a build operation, we may cache the result of a given system call.private void
traverse(java.util.List<java.lang.String> paths, java.io.File item)
-
Methods inherited from class aQute.bnd.osgi.Analyzer
_bsn, _classes, _ee, _exporters, _exports, _findname, _findpath, _imports, _md5, _packageattribute, _packages, _sha1, addClasspath, addClasspath, addClasspath, applyVersionPolicy, assignable, assignable, assignable, assignable, augmentExports, augmentImports, begin, calcManifest, calculateExportsFromContents, calculateVersionRange, check, cleanupModifier, cleanupUses, cleanupVersion, clear, close, divideRegularAndDynamicImports, doExportsToImports, doNameSection, doPlugins, doRequireBnd, doUses, doUses, filter, findClass, findClasspathEntry, findPath, findProvidedPackages, findResource, findResources, fixupAttributes, forceRefresh, getAPIUses, getBndInfo, getBndLastModified, getBndVersion, getBsn, getBundleClassPathEntry, getClasses, getClasspath, getClasspathExports, getClassSignature, getClassspace, getClassspace, getContained, getDescriptor, getEEs, getExports, getFieldSignature, getHighestEE, getHostPackages, getImports, getJar, getJarFromName, getJarsFromName, getLowestEE, getManifest, getMethodSignature, getName, getOutputFile, getPackageInfo, getPackageRef, getPackages, getPrivates, getReferred, getRequireBundlePackages, getSourceFileFor, getSourceFileFor, getTarget, getTypeRef, getTypeRefFromFQN, getTypeRefFromPath, getUnreachable, getUses, getVersion, getVersionPolicy, getXRef, isImported, isNoBundle, isResourceOnly, mergeManifest, nonClassReferTo, parsePackageinfo, putAll, referred, referTo, referToByBinaryName, removeAttributes, removeDynamicImports, removeTransitive, save, setBase, setClasspath, setClasspath, setClasspath, setClasspath, setDefaults, setDiagnostics, setJar, setJar, setTypeLocation, validResourcePath, verifyManifestHeadersCase
-
Methods inherited from class aQute.bnd.osgi.Processor
_basedir, _fileuri, _findfile, _frange, _native_capability, _propertiesdir, _propertiesname, _random, _thisfile, _uri, addBasicPlugin, addClose, addExtensions, addIncluded, addProperties, addProperties, append, appendPath, beginHandleErrors, check, concat, customize, decorated, decorated, doAttrbutes, doIncludeFile, doIncludeFile, endHandleErrors, error, error, exception, exists, findHeader, findHeader, findHeader, formatArrays, get, get, getBase, getBaseURI, getChecksum, getClass, getDuration, getErrors, getExecutor, getFile, getFile, getFlattenedProperties, getFlattenedProperties, getHeader, getHeader, getHeader, getHeader, getIncluded, getInfo, getInfo, getInstructions, getJavaExecutable, getLine, getLoader, getLocation, getLogger, getMacroDomains, getManifestAsProperties, getMergedParameters, getParameters, getParent, getPlugin, getPlugins, getPlugins, getProfile, getPromiseFactory, getProperties, getPropertiesFile, getProperty, getProperty, getProperty, getPropertyKeys, getReplacer, getScheduledExecutor, getSelfAndAncestors, getSettings, getTop, getUnexpandedProperty, getUnprocessedProperty, getWarnings, is, isDuplicate, isExceptions, isFailOk, isInteractive, isMissingPlugin, isOk, isPedantic, isPerfect, isStrict, isTrace, isTrue, iterator, join, join, join, join, join, join, keySet, lastModified, loadPlugins, loadProperties, loadProperties0, makePrintable, merge, mergeLocalProperties, mergeProperties, mergeProperties, mergeProperties, mergeProperties, newHashMap, newList, newList, newMap, newMap, newSet, newSet, normalize, normalize, parseHeader, parseHeader, printClause, printClauses, printClauses, printExceptionSummary, printStackTrace, progress, progress, propertiesChanged, quote, read, refresh, removeBasicPlugin, removeClose, removeDuplicateMarker, replaceAll, replaceExtension, report, set, setExceptions, setFileMustExist, setForceLocal, setLocation, setParent, setPedantic, setProperties, setProperties, setProperties, setProperties, setProperty, setTrace, signal, since, split, split, split, spliterator, stream, system, toFullHeaderPattern, toString, trace, tree, unsetProperty, updateModified, use, warning
-
Methods inherited from class aQute.bnd.osgi.Domain
copyFrom, domain, domain, domain, domain, domain, domain, domain, getBundleActivator, getBundleCategory, getBundleClasspath, getBundleClassPath, getBundleContactAddress, getBundleCopyright, getBundleDescription, getBundleDocURL, getBundleName, getBundleNative, getBundleRequiredExecutionEnvironment, getBundleSymbolicName, getBundleVendor, getBundleVersion, getDynamicImportPackage, getExportContents, getExportPackage, getFragmentHost, getIcon, getImportPackage, getIncludeResource, getParameters, getParameters, getParameters, getParameters, getPrivatePackage, getProvideCapability, getRequireBundle, getRequireCapability, getRunblacklist, getRunee, isSources, normalizeKey, setAugment, setBundleActivator, setBundleClasspath, setBundleRequiredExecutionEnvironment, setBundleSymbolicName, setBundleVersion, setBundleVersion, setConditionalPackage, setExportContents, setExportPackage, setFailOk, setImportPackage, setIncludePackage, setIncludeResource, setPrivatePackage, setRunblacklist, setRunee, setRunfw, setRunRequires, setSources, setTranslation, translate, translate
-
-
-
-
Field Detail
-
logger
private static final org.slf4j.Logger logger
-
IR_PATTERN
private static final java.util.regex.Pattern IR_PATTERN
-
differ
private final DiffPluginImpl differ
-
xdoNotCopy
private java.util.regex.Pattern xdoNotCopy
-
SPLIT_MERGE_LAST
private static final int SPLIT_MERGE_LAST
- See Also:
- Constant Field Values
-
SPLIT_MERGE_FIRST
private static final int SPLIT_MERGE_FIRST
- See Also:
- Constant Field Values
-
SPLIT_ERROR
private static final int SPLIT_ERROR
- See Also:
- Constant Field Values
-
SPLIT_FIRST
private static final int SPLIT_FIRST
- See Also:
- Constant Field Values
-
SPLIT_DEFAULT
private static final int SPLIT_DEFAULT
- See Also:
- Constant Field Values
-
sourcePath
private final java.util.List<java.io.File> sourcePath
-
make
private final Make make
-
defaultPreProcessMatcher
private Instructions defaultPreProcessMatcher
-
buildInstrs
private BuilderInstructions buildInstrs
-
cachedSystemCalls
private final java.util.Map<java.lang.Integer,java.lang.String> cachedSystemCalls
-
fixed
private static final java.lang.String[] fixed
-
firstUse
boolean firstUse
-
tree
private Tree tree
-
makeBnd
static MakeBnd makeBnd
-
makeCopy
static MakeCopy makeCopy
-
serviceComponent
static ServiceComponent serviceComponent
-
cdiAnnotations
static CDIAnnotations cdiAnnotations
-
dsAnnotations
static DSAnnotations dsAnnotations
-
metatypeAnnotations
static MetatypeAnnotations metatypeAnnotations
-
moduleAnnotations
static JPMSAnnotations moduleAnnotations
-
moduleInfoPlugin
static JPMSModuleInfoPlugin moduleInfoPlugin
-
spiDescriptorGenerator
static SPIDescriptorGenerator spiDescriptorGenerator
-
GITREF_P
private static final java.util.regex.Pattern GITREF_P
#388 Manifest header to get GIT head Get the head commit number. Look for a .git/HEAD file, going up in the file hierarchy. Then get this file, and resolve any symbolic reference.
-
_githeadHelp
static final java.lang.String _githeadHelp
- See Also:
- Constant Field Values
-
-
Method Detail
-
build
public Jar build() throws java.lang.Exception
- Throws:
java.lang.Exception
-
getBuildJar
private Jar getBuildJar()
-
doPom
void doPom(Jar dot) throws java.lang.Exception, java.io.IOException
- Throws:
java.lang.Exception
java.io.IOException
-
doDigests
private void doDigests(Jar dot) throws java.lang.Exception
Check if we need to calculate any checksums.- Parameters:
dot
-- Throws:
java.lang.Exception
-
init
public void init() throws java.lang.Exception
Allow any local initialization by subclasses before we build.- Throws:
java.lang.Exception
-
doWab
private Jar doWab(Jar dot) throws java.lang.Exception
Turn this normal bundle in a web and add any resources.- Throws:
java.lang.Exception
-
pathStartsWith
private static boolean pathStartsWith(java.lang.String path, java.lang.String prefix)
-
addWabLib
private void addWabLib(Jar dot, java.io.File f, java.lang.String name, java.util.Map<java.lang.String,java.lang.String> attrs) throws java.lang.Exception
Add a wab lib to the jar.- Parameters:
f
-- Throws:
java.lang.Exception
-
doSaveManifest
private void doSaveManifest(Jar dot) throws java.lang.Exception
Get the manifest and write it out separately if -savemanifest is set- Parameters:
dot
-- Throws:
java.lang.Exception
-
changedFile
protected void changedFile(java.io.File f)
-
sign
void sign(Jar jar) throws java.lang.Exception
Sign the jar file. -sign :[ ';' 'password:=' ] [ ';' 'keystore:=' ] [ ';' 'sign-password:=' ] ( ',' ... )* - Throws:
java.lang.Exception
-
hasSources
public boolean hasSources()
-
getExtra
protected Jar getExtra() throws java.lang.Exception
Answer extra packages. In this case we implement conditional package. Any
-
analyze
public void analyze() throws java.lang.Exception
Intercept the call to analyze and cleanup versions after we have analyzed the setup. We do not want to cleanup if we are going to verify.
-
doSnapshot
private java.lang.String doSnapshot(java.lang.String version)
-
cleanupVersion
public void cleanupVersion(Packages packages, java.lang.String defaultVersion)
-
cleanupVersion
public void cleanupVersion(Packages packages, java.lang.String defaultVersion, java.lang.String what)
-
addSources
private void addSources(Jar dot) throws java.lang.Exception
- Throws:
java.io.IOException
java.lang.Exception
-
getSourcePath
public java.util.Collection<java.io.File> getSourcePath()
-
doVerify
private void doVerify(Jar dot) throws java.lang.Exception
- Throws:
java.lang.Exception
-
doExpand
private void doExpand(Jar dot) throws java.lang.Exception
- Throws:
java.lang.Exception
-
doExpand
private java.util.Set<Instruction> doExpand(Jar jar, MultiMap<java.lang.String,Jar> index, Instructions filter) throws java.lang.Exception
Destructively filter the packages from the build up index. This index is used by the Export Package as well as the Private Package- Throws:
java.lang.Exception
-
filterFrom
private java.util.List<Jar> filterFrom(Instruction from, java.util.List<Jar> providers)
- Parameters:
from
-
-
copyPackage
private void copyPackage(Jar dest, java.util.List<Jar> providers, java.lang.String path, int splitStrategy)
Copy the package from the providers based on the split package strategy.
-
diagnostic
private java.lang.String diagnostic(java.lang.String pack, java.util.List<Jar> culprits)
Analyze the classpath for a split package
-
getSplitStrategy
private int getSplitStrategy(java.lang.String type)
-
matches
private Instruction matches(Instructions instructions, java.lang.String pack, java.util.Set<Instruction> unused, java.lang.String source)
Matches the instructions against a package.- Parameters:
instructions
- The list of instructionspack
- The name of the packageunused
- The total list of patterns, matched patterns are removedsource
- The name of the source container, can be filtered upon with the from: directive.
-
doIncludeResources
private void doIncludeResources(Jar jar) throws java.lang.Exception
Parse the Bundle-Includes header. Files in the bundles Include header are included in the jar. The source can be a directory or a file.- Throws:
java.io.IOException
java.io.FileNotFoundException
java.lang.Exception
-
doIncludeResource
private void doIncludeResource(Jar jar, java.lang.String includes) throws java.lang.Exception
- Throws:
java.lang.Exception
-
doIncludeResource
private void doIncludeResource(Jar jar, Parameters clauses) throws java.util.zip.ZipException, java.io.IOException, java.lang.Exception
- Throws:
java.util.zip.ZipException
java.io.IOException
java.lang.Exception
-
doIncludeResource
private void doIncludeResource(Jar jar, java.lang.String name, java.util.Map<java.lang.String,java.lang.String> extra) throws java.util.zip.ZipException, java.io.IOException, java.lang.Exception
- Throws:
java.util.zip.ZipException
java.io.IOException
java.lang.Exception
-
doClassAttribute
private void doClassAttribute(Jar jar, java.lang.String name, java.util.Map<java.lang.String,java.lang.String> extra, Instructions preprocess, boolean absentIsOk) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getPreProcessMatcher
private Instructions getPreProcessMatcher(java.util.Map<java.lang.String,java.lang.String> extra)
-
doCommand
private void doCommand(Jar jar, java.lang.String source, java.lang.String destination, java.util.Map<java.lang.String,java.lang.String> extra, Instructions preprocess, boolean absentIsOk) throws java.lang.Exception
It is possible in Include-Resource to use a system command that generates the contents, this is indicated withcmd
attribute. The command can be repeated for a number of source files with thefor
attribute which indicates a list of repetitions, often down with theMacro._lsa(String[])
orMacro#_lsb(String[])
macro. The repetition will repeat the given command for each item. The @} macro can be used to replace the current item. If nofor
is given, the source is used as the only item. If the destination contains a macro, each iteration will create a new file, otherwise the destination name is used.- Parameters:
jar
-source
-destination
-extra
-preprocess
-absentIsOk
-- Throws:
java.lang.Exception
-
traverse
private void traverse(java.util.List<java.lang.String> paths, java.io.File item)
-
findLastModifiedWhileOlder
private long findLastModifiedWhileOlder(java.io.File file, long lastModified)
Check if a file or directory is older than the given time.- Parameters:
file
-lastModified
-
-
doResourceDirectory
private java.lang.String doResourceDirectory(Jar jar, java.util.Map<java.lang.String,java.lang.String> extra, Instructions preprocess, java.io.File sourceFile, java.lang.String destinationPath) throws java.lang.Exception
- Throws:
java.lang.Exception
-
resolveFiles
private void resolveFiles(java.io.File dir, java.io.FileFilter filter, boolean recursive, java.lang.String path, java.util.Map<java.lang.String,java.io.File> files, boolean flatten)
-
noSuchFile
private void noSuchFile(Jar jar, java.lang.String clause, java.util.Map<java.lang.String,java.lang.String> extra, java.lang.String source, java.lang.String destinationPath) throws java.lang.Exception
- Throws:
java.lang.Exception
-
extractFromJar
private void extractFromJar(Jar jar, java.lang.String source, java.lang.String destination, boolean absentIsOk) throws java.util.zip.ZipException, java.io.IOException
Extra resources from a Jar and add them to the given jar.- Throws:
java.util.zip.ZipException
java.io.IOException
-
addAll
public boolean addAll(Jar to, Jar sub, Instruction filter)
Add all the resources in the given jar that match the given filter.- Parameters:
sub
- the jarfilter
- a pattern that should match the resoures in sub to be added
-
addAll
public boolean addAll(Jar to, Jar sub, Instruction filter, java.lang.String destination)
Add all the resources in the given jar that match the given filter.- Parameters:
sub
- the jarfilter
- a pattern that should match the resoures in sub to be added
-
copy
private void copy(Jar jar, java.lang.String path, java.io.File from, Instructions preprocess, java.util.Map<java.lang.String,java.lang.String> extra) throws java.lang.Exception
- Throws:
java.lang.Exception
-
copy
private void copy(Jar jar, java.lang.String path, Resource resource, java.util.Map<java.lang.String,java.lang.String> extra)
-
setSourcepath
public void setSourcepath(java.io.File[] files)
-
addSourcepath
public void addSourcepath(java.io.File cp)
-
builds
public Jar[] builds() throws java.lang.Exception
Build Multiple jars. If the -sub command is set, we filter the file with the given patterns.- Throws:
java.lang.Exception
-
startBuild
protected void startBuild(Builder builder) throws java.lang.Exception
Called when we start to build a builder- Throws:
java.lang.Exception
-
doneBuild
protected void doneBuild(Builder builder) throws java.lang.Exception
Called when we're done with a builder- Throws:
java.lang.Exception
-
getSubBuilders
public java.util.List<Builder> getSubBuilders() throws java.lang.Exception
Answer a list of builders that represent this file or a list of files specified in -sub. This list can be empty. These builders represents to be created artifacts and are each scoped to such an artifacts. The builders can be used to build the bundles or they can be used to find out information about the to be generated bundles.- Returns:
- List of 0..n builders representing artifacts.
- Throws:
java.lang.Exception
-
getSubBuilder
public Builder getSubBuilder(java.io.File file) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getSubBuilder
public Builder getSubBuilder() throws java.lang.Exception
- Throws:
java.lang.Exception
-
_maven_version
public java.lang.String _maven_version(java.lang.String[] args)
A macro to convert a maven version to an OSGi version
-
_permissions
public java.lang.String _permissions(java.lang.String[] args)
-
removeBundleSpecificHeaders
public void removeBundleSpecificHeaders()
-
isInScope
public boolean isInScope(java.util.Collection<java.io.File> resources) throws java.lang.Exception
Check if the given resource is in scope of this bundle. That is, it checks if the Include-Resource includes this resource or if it is a class file it is on the class path and the Export-Package or Private-Package include this resource.- Throws:
java.lang.Exception
-
getIncludedResourcePrefixes
private java.util.stream.Stream<java.lang.String> getIncludedResourcePrefixes()
Extra the paths for the directories and files that are used in the Include-Resource header.
-
getClasspathEntrySuffix
public java.lang.String getClasspathEntrySuffix(java.io.File resource) throws java.lang.Exception
Answer the string of the resource that it has in the container. It is possible that the resource is a classpath entry. In that case an empty string is returned.- Parameters:
resource
- The resource to look for- Returns:
- A suffix on the classpath or "" if the resource is a class path entry
- Throws:
java.lang.Exception
-
doNotCopy
public boolean doNotCopy(java.lang.String v)
doNotCopy The doNotCopy variable maintains a patter for files that should not be copied. There is a defaultConstants.DEFAULT_DO_NOT_COPY
but this ca be overridden with theConstants.DONOTCOPY
property.
-
doNotCopy
public boolean doNotCopy(java.io.File from)
-
getDoNotCopy
public java.util.regex.Pattern getDoNotCopy()
-
setTypeSpecificPlugins
protected void setTypeSpecificPlugins(java.util.Set<java.lang.Object> list)
- Overrides:
setTypeSpecificPlugins
in classAnalyzer
-
doDiff
public void doDiff(Jar dot) throws java.lang.Exception
Diff this bundle to another bundle for the given packages.- Throws:
java.lang.Exception
-
show
private void show(Diff p, java.lang.String indent, boolean warning)
Show the diff recursively
-
addSourcepath
public void addSourcepath(java.util.Collection<java.io.File> sourcepath)
-
doBaseline
protected void doBaseline(Jar dot) throws java.lang.Exception
Base line against a previous version. Should be overridden in the ProjectBuilder where we have access to the repos- Throws:
java.lang.Exception
-
_githead
public java.lang.String _githead(java.lang.String[] args) throws java.io.IOException
- Throws:
java.io.IOException
-
report
public void report(java.util.Map<java.lang.String,java.lang.Object> table) throws java.lang.Exception
Create a report of the settings
-
from
public Builder from(BuilderSpecification spec) throws java.io.IOException
Collect the information from theBuilderSpecification
- Throws:
java.io.IOException
-
system
public java.lang.String system(boolean allowFail, java.lang.String command, java.lang.String input) throws java.io.IOException, java.lang.InterruptedException
We override system so that, for the duration of a build operation, we may cache the result of a given system call. In a large build with many 'make' build jars, such as some OSGi CT build projects, we may call system hundreds of time to compute headers based upon git information such as 'git describe'. Since this information will not change during the course of a single build operation, we cache results to only call once.
-
-