stempler / bnd-platform Goto Github PK
View Code? Open in Web Editor NEWBuild OSGi bundles and Eclipse Update Sites from existing JARs, e.g. from Maven repositories (Plugin for Gradle)
License: Apache License 2.0
Build OSGi bundles and Eclipse Update Sites from existing JARs, e.g. from Maven repositories (Plugin for Gradle)
License: Apache License 2.0
Hi,
I create a bundle from commons-logging:
dependencies { platform 'commons-logging:commons-logging:1.1.1' }
It has an optional dependency to Avalon:
<dependency> <groupId>avalon-framework</groupId> <artifactId>avalon-framework</artifactId> <version>4.1.3</version> <optional>true</optional> </dependency>
It looks like bnd-platform makes a hard dependency at out it:
Import-Package: javax.servlet,org.apache.avalon.framework.logger,org.apa che.log,org.apache.log4j
Is that expected? In other words, do pnd-platform support optional dependencies automatically?
If not, is there a workaround? I tried various things, like using override and importIgnorePackages, but nothing worked unfortunately.
Hi there
I'm having a problem in a project where I want to use your plugin and I was wondering if you have any ideas how to fix this.
A few of my Gradle dependencies are already bundles containing an MANIFEST.MF file. And they conain a Eclipse-PlatformFilter:
Eclipse-PlatformFilter: (& (osgi.ws=gtk)(osgi.os=linux)(osgi.arch=x86_64
))
These are the dependencies (available through maven central):
com.eclipsesource.j2v8:j2v8_macosx_x86_64:4.6.0
com.eclipsesource.j2v8:j2v8_linux_x86_64:4.6.0
com.eclipsesource.j2v8:j2v8_win32_x86_64:4.6.0
com.eclipsesource.j2v8:j2v8_win32_x86:4.6.0
Now, the problem is that the filter is respected in the corresponding units in the updatesite, but not in the feature bundle (content.xml).
An example:
The unit for one of the libs contains the correct filter in the update site:
<unit id='com.eclipsesource.j2v8.linux_x86_64' version='4.6.0.20191106024042' singleton='false'>
<update id='com.eclipsesource.j2v8.linux_x86_64' range='[0.0.0,4.6.0.20191106024042)' severity='0'/>
<properties size='2'>
<property name='org.eclipse.equinox.p2.name' value='j2v8_linux_x86_64'/>
<property name='org.eclipse.equinox.p2.description' value='J2V8 is a set of Java bindings for V8'/>
</properties>
<provides size='8'>
<provided namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.linux_x86_64' version='4.6.0.20191106024042'/>
<provided namespace='osgi.bundle' name='com.eclipsesource.j2v8.linux_x86_64' version='4.6.0.20191106024042'/>
<provided namespace='java.package' name='com.eclipsesource.v8' version='4.6.0'/>
<provided namespace='java.package' name='com.eclipsesource.v8.debug' version='4.6.0'/>
<provided namespace='java.package' name='com.eclipsesource.v8.debug.mirror' version='4.6.0'/>
<provided namespace='java.package' name='com.eclipsesource.v8.utils' version='4.6.0'/>
<provided namespace='java.package' name='com.eclipsesource.v8.utils.typedarrays' version='4.6.0'/>
<provided namespace='org.eclipse.equinox.p2.eclipse.type' name='bundle' version='1.0.0'/>
</provides>
<requires size='4'>
<required namespace='java.package' name='com.eclipsesource.v8' range='[4.6.0,5.0.0)'/>
<required namespace='java.package' name='com.eclipsesource.v8.debug.mirror' range='[4.6.0,5.0.0)'/>
<required namespace='java.package' name='com.eclipsesource.v8.utils' range='[4.6.0,5.0.0)'/>
<required namespace='java.package' name='com.eclipsesource.v8.utils.typedarrays' range='[4.6.0,5.0.0)'/>
</requires>
<filter>
(&(osgi.arch=x86_64)(osgi.os=linux)(osgi.ws=gtk))
</filter>
<artifacts size='1'>
<artifact classifier='osgi.bundle' id='com.eclipsesource.j2v8.linux_x86_64' version='4.6.0.20191106024042'/>
</artifacts>
<touchpoint id='org.eclipse.equinox.p2.osgi' version='1.0.0'/>
<touchpointData size='1'>
<instructions size='1'>
<instruction key='manifest'>
Bundle-SymbolicName: com.eclipsesource.j2v8.linux_x86_64
Bundle-Version: 4.6.0.20191106024042
</instruction>
</instructions>
</touchpointData>
</unit>
The feature group unit on the other hand lists all the libs as required without the filter:
<unit id='org.contextmapper.contextmap.generator.feature.feature.group' version='0.1.0.20191106024042' singleton='false'>
<update id='org.contextmapper.contextmap.generator.feature.feature.group' range='[0.0.0,0.1.0.20191106024042)' severity='0'/>
<properties size='3'>
<property name='org.eclipse.equinox.p2.name' value='ContextMappers Context Map Generator'/>
<property name='org.eclipse.equinox.p2.provider' value='Context Mapper'/>
<property name='org.eclipse.equinox.p2.type.group' value='true'/>
</properties>
<provides size='1'>
<provided namespace='org.eclipse.equinox.p2.iu' name='org.contextmapper.contextmap.generator.feature.feature.group' version='0.1.0.20191106024042'/>
</provides>
<requires size='34'>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.linux_x86_64' range='[4.6.0.20191106024042,4.6.0.20191106024042]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.linux_x86_64.source' range='[4.6.0.20191106024042,4.6.0.20191106024042]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.macosx_x86_64' range='[4.6.0,4.6.0]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.macosx_x86_64.source' range='[4.6.0,4.6.0]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.win32_x86' range='[4.6.0,4.6.0]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.win32_x86.source' range='[4.6.0,4.6.0]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.win32_x86_64' range='[4.6.0,4.6.0]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.win32_x86_64.source' range='[4.6.0,4.6.0]'/>
<!-- removed others to save space here ... -->
<required namespace='org.eclipse.equinox.p2.iu' name='org.contextmapper.contextmap.generator.feature.feature.jar' range='[0.1.0.20191106024042,0.1.0.20191106024042]'>
<filter>
(org.eclipse.update.install.features=true)
</filter>
</required>
</requires>
<touchpoint id='null' version='0.0.0'/>
</unit>
With the generated updatesite it is not possible to install the feature, since the feature requires all of the bundles (no filter defined), but the Eclipse installer cannot find the bundles due to the generated filters in the individual bundles:
Problems occurred while resolving the target contents
Cannot complete the install because one or more required items could not be found.
Missing requirement: ContextMappers Context Map Generator 0.1.0.20191105183722 (org.contextmapper.contextmap.generator.feature.feature.group 0.1.0.20191105183722) requires 'org.eclipse.equinox.p2.iu; com.eclipsesource.j2v8.macosx_x86_64 [4.6.0,4.6.0]' but it could not be found
Software being installed: ContextMappers Context Map Generator 0.1.0.20191105183722 (org.contextmapper.contextmap.generator.feature.feature.group 0.1.0.20191105183722)
From my manual tests, I would say that the problem would be solved if the filters would be generated into the feature group unit as well:
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.linux_x86_64' range='[4.6.0.20191106024042,4.6.0.20191106024042]'>
<filter>
(&(osgi.arch=x86_64)(osgi.os=linux)(osgi.ws=gtk))
</filter>
</required>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.linux_x86_64.source' range='[4.6.0.20191106024042,4.6.0.20191106024042]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.macosx_x86_64' range='[4.6.0,4.6.0]'>
<filter>
(&(osgi.arch=x86_64)(osgi.os=macosx)(osgi.ws=cocoa))
</filter>
</required>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.macosx_x86_64.source' range='[4.6.0,4.6.0]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.win32_x86' range='[4.6.0,4.6.0]'>
<filter>
(&(osgi.arch=x86)(osgi.os=win32)(osgi.ws=win32))
</filter>
</required>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.win32_x86.source' range='[4.6.0,4.6.0]'/>
<required namespace='org.eclipse.equinox.p2.iu' name='com.eclipsesource.j2v8.win32_x86_64' range='[4.6.0,4.6.0]'>
<filter>
(&(osgi.arch=x86_64)(osgi.os=win32)(osgi.ws=win32))
</filter>
</required>
However, I don't know how to produce this output with your plugin.
Any ideas how to fix this? Is there maybe a way to specify the filters if I configure the feature in my Gradle build manually? I'm grateful for any inputs how to work around this issue...
hi @stempler ,
I want to build out of source , I have set the buildDir=/home/user/p2
updateSiteDir= new File("/home/user/p2", 'site')
the build directory is created under the project, feature and plugins are in the build directory under the project.
The p2/site folder contains only the artifacts.jar content.jar .
hi @stempler
for now, by default the gradle plugin will download Eclipse to project.buildDir
, however, I make the gradle build run in travis-ci, the ci job will download Eclipse for each build.
in my mind, this is waste of resources, so I'd like to cache the Eclipse instance in travis-ci. but the problem is looks like I need to specify a location outside of the project in .travis.yml
for cache.
so i'm thinking can bnd-platform support download Eclipse outside of project folder.
Unfortunately reading the pom.xml to extract the licenses and organization information does not work.
After looking into your code a saw, that in the method ResolvedBundleArtifact.extractPomInfo you have forgotten to assign the return value of DependencyHelper.getDetachedDependency(project, pom, 'pom') to pomFile. Therefore the variable pomFile is always null and the data extraction is skipped. Correct would be
try {
pomFile = DependencyHelper.getDetachedDependency(project, pom, 'pom')
} catch (e) {
project.logger.warn "Could not retrieve POM $pom"
}
Hi,
I was wondering why there is a need for the platform_feature.
Isn't it possible to have the features created with their plugin dependencies populated directly? Now all the dependencies are populated at the level of the platform_feature. I could be mistaken, but doesn't that kind of break the feature definitions?
Cheers,
Dann
Hi again,
I have a configuration which contains two dependencies, A
and B
. Each of them has a further tree of transitive dependencies behind it.
Due to OSGi issues I need to create a merged bundle which contains all the transitive dependencies of A
. However, I do not want to add any dependencies from B
into the merged bundle.
Unfortunately, Iโve found no way for a working merge
configuration so far. Using the match
filter I can only filter based on the current artifact ID or group, but not based on the โrootโ dependency. Adding A
via bundle
property to the merge
configuration doesnโt work as well.
I tried separating A
and B
to two distinct features and simply doing a match { true }
. But the merge would also merge dependencies present in the other feature (I thought, features would create a concept of an โisolated scopeโ which is obviously not the case).
Simply listing all transitive dependencies of A
in the match
block would work, but it just seems ugly and Iโll run into issues when changing versions later.
Is there any nicer approach?
My explanation is probably rather abstract. Please let me know if itโs too hard to understand and Iโll happily construct a working example.
Hi
I try to use this tool the first time, so I might miss something :-)
I try beside others to process this plugin:
bundle ('io.projectreactor.addons:reactor-extra:3.+') {
bnd {
optionalImport 'kotlin'
optionalImport 'kotlin.jvm.functions'
optionalImport 'kotlin.jvm.internal'
}
}
But the created file still has those packages in the imports non-optional:
Import-Package: javax.annotation,javax.swing,kotlin,kotlin.jvm.functio
ns,kotlin.jvm.internal,org.eclipse.swt.widgets,org.reactivestreams,re
actor.core,reactor.core.publisher,reactor.core.scheduler,reactor.sche
duler.clock;version="[3.2,4)",reactor.util,reactor.util.annotation,re
actor.util.context,reactor.util.function
Can someone help please?
cu
Frank
How hard would it be to add logic which sets addQualifier to true iff the version ends in SNAPSHOT
?
It seems to be impossible to add a "" block to the feature.xml. For example I have feature A which includes plugins a, b, c and I have feature B which includes plugin d, that depends on a and b.
Currently, feature B will automatically include plugins a, b and d, but in my case I would prefer it if feature B would only include plugin d and have an additional dependency on feature A.
Is this possible?
Hi,
I'm using bnd-platform to create a self contained eclipse-plugin bundle using conditionalpackage
expression, as you can see in my build.gradle
into plugin folder :
dependencies {
compile 'p2:ummisco.gama.annotations:+'
compile 'p2:msi.gama.core:+'
compile 'org.genstar:genstar-core:1.0'
compile 'org.genstar:genstar-spll:1.0'
compile 'org.genstar:genstar-spin:1.0'
compile 'org.genstar:genstar-gospl:1.0'
}
apply plugin: 'com.diffplug.gradle.osgi.bndmanifest'
osgiBndManifest {
copyTo 'META-INF/MANIFEST.MF'
}
// configure the OSGi bundle
jar.manifest.attributes(
'-exportcontents': 'core.*, gospl.*, spin.*, spll.*',
'-removeheaders': 'Bnd-LastModified,Bundle-Name,Created-By,Tool,Private-Package,Require-Capability',
'-conditionalpackage': '!org.w3c.*, !org.xml.*, !javax.*, *',
'Import-Package': '!org.w3c.*, !org.xml.*, !javax.*,*',
'Bundle-Version': '1.0.0.${tstamp}',
'Bundle-SymbolicName': project.name,
'Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8',
'Require-Capability': 'osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"',
'Bundle-Vendor': 'Gama team',
'Bundle-License': "http://www.apache.org/licenses/LICENSE-2.0"
)
But, ben i launch gradle clean updatesite
, bnd-platform create a p2 repository with all transitive dependencies. I don't need all this dependencies because my bundle contain all the class needed for the runtime. I want to produce p2 repository with only this self contained bundle, so, is there a flag or something to desactivate this option into bnd-platform ?
The plugin here only checks the extension of the artifact, but if you have multiple jar artifacts with the same id (for example one containing the main program and one containing tests), bnd-plattform chooses a random one to create a bundle. My hacky workaround:
if (it.extension == 'jar' && it.type == 'jar') {
Hi Simon,
first of all, thanks a lot for your plugin, it's really useful and easy to use!
Quick question: is it possible to download bundles from existing p2 sites? The idea would be to clone parts of them to be more independent and/or merge several sources into a single p2 sites.
hi @stempler
we're OSGifying testng, project is here.
for the snapshot version, it will be replaced with timestamp qualifier:
platform {
feature(id: 'org.testng.p2.feature', name: 'TestNG Feature') {
plugin "org.testng:testng:${version}", {
bnd {
optionalImport 'com.google.common.*'
}
exclude module: 'ant'
}
}
featureId 'org.testng.p2.feature'
featureName 'TestNG Feature'
featureVersion versionWithQualifier
categoryName 'TestNG Libraries'
categoryId 'org.testng.p2.libraries'
useBndHashQualifiers false
defaultQualifier ''
bnd(group: 'org.testng', name: 'testng', version: "${version}") {
version = versionWithQualifier
}
}
but one thing i noticed, the source feature version is not substituted (still be '-SNAPSHOT'), org.testng.p2.feature.source_6.9.13.SNAPSHOT-bnd-hApQA.jar:
ll build/updatesite/*
-rw-r--r-- 1 nick staff 1.1K Oct 21 04:15 build/updatesite/artifacts.jar
-rw-r--r-- 1 nick staff 2.2K Oct 21 04:15 build/updatesite/content.jar
build/updatesite/features:
total 8.0K
-rw-r--r-- 1 nick staff 419 Oct 21 04:15 org.testng.p2.feature.source_6.9.13.SNAPSHOT-bnd-hApQA.jar
-rw-r--r-- 1 nick staff 453 Oct 21 04:15 org.testng.p2.feature_6.9.13.20161021110925-bnd-9RzSQ.jar
build/updatesite/plugins:
total 2.1M
-rw-r--r-- 1 nick staff 55K Oct 21 04:15 com.beust.jcommander.source_1.48.0.jar
-rw-r--r-- 1 nick staff 63K Oct 21 04:15 com.beust.jcommander_1.48.0.jar
-rw-r--r-- 1 nick staff 296K Oct 21 04:15 org.apache-extras.beanshell.bsh.source_2.0.0.b6.jar
-rw-r--r-- 1 nick staff 385K Oct 21 04:15 org.apache-extras.beanshell.bsh_2.0.0.b6.jar
-rw-r--r-- 1 nick staff 476K Oct 21 04:15 org.testng.source_6.9.13.20161021110925.jar
-rw-r--r-- 1 nick staff 840K Oct 21 04:15 org.testng_6.9.13.20161021110925.jar
did I missing anything, or it's a bug?
It seems that there may be a bug where certain plugins are not being added to the bundle, but the parent plugin's transitive dependencies are. Ex:
platform{ feature(id: 'platform.plugins', name: 'P2 update site Plugins') { plugin (group: 'eclipse.plugins', name: 'manager-handle', version: '+') }
When the updatesite task is run, the plugin 'manager-handle' shows in build/plugins as expected. When I dive into the build/updatesite/plugins dir it is not there. However, all of it's transitive dependencies are.
I also checked the artifact.xml and it is not showing there as well, just the transitive dependencies. No errors display on build. This behavior does not occur with every plugin, but certain ones have this issue. I have checked POMS and do not notice any difference between them. I know you may not have time to fix or look into this issue, but it would be greatly appreciated if you could lend me some ideas or point me to somewhere to look into for this issue. Thanks a lot for the help!
Using the example
platform {
// add pegdown as dependency to the platform configuration
bundle 'org.pegdown:pegdown:1.4.2'
}
with gradle version 6.0.1 I get the error:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bundles'.
> Cannot add artifact if target configuration has been set
* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':bundles'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:187)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:166)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:374)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:361)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:354)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:340)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.InvalidUserCodeException: Cannot add artifact if target configuration has been set
at org.gradle.api.internal.artifacts.dependencies.AbstractModuleDependency.validateNoTargetConfiguration(AbstractModuleDependency.java:306)
at org.gradle.api.internal.artifacts.dependencies.AbstractModuleDependency.addArtifact(AbstractModuleDependency.java:122)
at org.gradle.api.internal.artifacts.dependencies.AbstractModuleDependency.addArtifact(AbstractModuleDependency.java:46)
at org.gradle.api.artifacts.ModuleDependency$addArtifact.call(Unknown Source)
at org.standardout.gradle.plugin.platform.internal.util.gradle.DependencyHelper$_retrieveSourcesForDeps_closure4.doCall(DependencyHelper.groovy:204)
at org.standardout.gradle.plugin.platform.internal.util.gradle.DependencyHelper.retrieveSourcesForDeps(DependencyHelper.groovy:195)
at org.standardout.gradle.plugin.platform.internal.util.gradle.DependencyHelper.resolveSourceArtifacts(DependencyHelper.groovy:167)
at org.standardout.gradle.plugin.platform.internal.util.gradle.DependencyHelper$resolveSourceArtifacts$0.call(Unknown Source)
at org.standardout.gradle.plugin.platform.internal.BundlesAction.execute(BundlesAction.groovy:159)
at org.standardout.gradle.plugin.platform.internal.BundlesAction.execute(BundlesAction.groovy)
...
It is working with gradle 5.6.4!
Hi, I am trying to generate a source bundle for my current gradle project, but I am not sure how to proceed. The bundles
and updateSite
tasks create a bundle/feature/update site for the jar defined in my project, but it does not create a corresponding source bundle.
I am using bnd-platform 1.3 and gradle 2.11 on Java 8 (Mac OSX).
My platform config:
platform {
bundle project
bnd(project) {
fetchSources = true
symbolicName = 'py4j-java'
bundleName = 'py4j-java'
version = bundleVersion
instruction 'Eclipse-BuddyPolicy', 'global'
instruction 'Import-Package', '!javax.net'
instruction 'Export-Package', 'py4j,py4j.commands,py4j.model,py4j.reflection'
instruction 'Bundle-RequiredExecutionEnvironment', 'JavaSE-1.6'
instruction 'Bundle-Description', 'Bridge between Python and Java'
instruction 'Bundle-DocURL', 'http://www.py4j.org'
addQualifier = true
eclipseHome = new File(eclipseHomePath)
featureId = 'org.py4j.feature'
featureName = 'Py4J Library'
featureVersion = bundleVersion
featureProvider = 'Py4J'
categoryId = 'py4j'
categoryName = 'Py4J'
}
}
The sources jar generated for my project:
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
archives jarTests
archives javadocJar
}
Thank you for this great gradle plug-in!
hi
when i try to use the plugin i got this error even if i compile it locally using java 1.7
Total time: 1.281 secs
[sts] Build failed
org.gradle.tooling.BuildException: Could not execute build using Gradle distribution 'https://services.gradle.org/distributions/gradle-2.1-bin.zip'.
at org.gradle.tooling.internal.consumer.ResultHandlerAdapter.onFailure(ResultHandlerAdapter.java:53)
at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:57)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
at org.gradle.tooling.internal.consumer.DefaultBuildLauncher.run(DefaultBuildLauncher.java:71)
at org.springsource.ide.eclipse.gradle.core.TaskUtil.execute(TaskUtil.java:117)
at org.springsource.ide.eclipse.gradle.core.launch.GradleProcess$1.doit(GradleProcess.java:92)
at org.springsource.ide.eclipse.gradle.core.util.GradleRunnable$1.run(GradleRunnable.java:53)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: org.gradle.internal.exceptions.LocationAwareException: Build file '/Volumes/Projects/turboecm/tempWorkspace/aceTest/build.gradle' line: 10
A problem occurred evaluating project ':aceTest'.
at org.gradle.initialization.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:77)
at org.gradle.initialization.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:47)
at org.gradle.initialization.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:30)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:108)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:45)
at org.gradle.tooling.internal.provider.BuildModelAction.run(BuildModelAction.java:32)
at org.gradle.tooling.internal.provider.ConfiguringBuildAction.run(ConfiguringBuildAction.java:134)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:47)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:35)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.ReturnResult.execute(ReturnResult.java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:70)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:45)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator.runCommand(DaemonStateCoordinator.java:258)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy.doBuild(StartBuildOrRespondWithBusy.java:49)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.HandleCancel.execute(HandleCancel.java:36)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.HandleStop.execute(HandleStop.java:30)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.CatchAndForwardDaemonFailure.execute(CatchAndForwardDaemonFailure.java:32)
at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:125)
at org.gradle.launcher.daemon.server.exec.DefaultDaemonCommandExecuter.executeCommand(DefaultDaemonCommandExecuter.java:52)
at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.handleCommand(DefaultIncomingConnectionHandler.java:154)
at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.receiveAndHandleCommand(DefaultIncomingConnectionHandler.java:128)
at org.gradle.launcher.daemon.server.DefaultIncomingConnectionHandler$ConnectionWorker.run(DefaultIncomingConnectionHandler.java:116)
at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
Caused by: org.gradle.api.GradleScriptException: A problem occurred evaluating project ':aceTest'.
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:54)
at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:190)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:39)
at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:26)
at org.gradle.configuration.project.ConfigureActionsProjectEvaluator.evaluate(ConfigureActionsProjectEvaluator.java:34)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:55)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:521)
at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:82)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:31)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
... 47 more
Caused by: java.lang.UnsupportedClassVersionError: org/standardout/gradle/plugin/platform/PlatformPlugin : Unsupported major.minor version 51.0
at org.gradle.internal.classloader.MultiParentClassLoader.loadClass(MultiParentClassLoader.java:63)
at org.gradle.internal.classloader.CachingClassLoader.loadClass(CachingClassLoader.java:41)
at org.gradle.api.internal.plugins.DefaultPluginRegistry.getTypeForId(DefaultPluginRegistry.java:101)
at org.gradle.api.internal.plugins.DefaultPluginContainer.getTypeForId(DefaultPluginContainer.java:183)
at org.gradle.api.internal.plugins.DefaultPluginContainer.apply(DefaultPluginContainer.java:103)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyPlugin(DefaultObjectConfigurationAction.java:115)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:36)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:80)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:131)
at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:37)
at org.gradle.api.Project$apply$2.call(Unknown Source)
at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.groovy:34)
at org.gradle.api.Script$apply$0.callCurrent(Unknown Source)
at build_f2vkllf00er06sbcfgqse1ok5.run(/Volumes/Projects/turboecm/tempWorkspace/aceTest/build.gradle:10)
at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:52)
... 57 more
[sts] Time taken: 0 min, 1 sec
[sts] -----------------------------------------------------
When building the project https://github.com/SimonScholz/retrofit-osgi, with "./gradlew updateSite", I get the following exception from Gradle. Do you have insight why?
FAILURE: Build failed with an exception.
java.util.NoSuchElementException (no error message)
Try:
Run with --info or --debug option to get more log output.
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':updateSite'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:61)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:45)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:233)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:74)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:55)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:32)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:113)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:197)
at org.gradle.internal.Factories$1.create(Factories.java:25)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:53)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:194)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:36)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:118)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:112)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:63)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:112)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:98)
at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:66)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:293)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.util.NoSuchElementException
at java_util_Iterator$next.call(Unknown Source)
at org.standardout.gradle.plugin.platform.PlatformPlugin$_apply_closure7.doCall(PlatformPlugin.groovy:247)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:588)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:569)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
... 69 more
BUILD FAILED
Total time: 1.339 secs
This is more a question than an issue, i have a strange behavior in my program which use bnd-platform
and goomph
in parallel.
I have multiple folders in the project :
com.diffplug.gradle.p2.asmaven
and downloads dependencies from a p2 repository and makes them available in a local maven repositoryWhen i run gradle updateSite
from the root folder in my project (git source here), this is the target.maven:updateSite
which is launched and not the folder genstar.plugin.platform
which contain the platform
definition of org.standardout.bnd-platform
The build download bad dependencies and failed with this error : #2200 and #40
When i launch in root genstar.plugin.platform:updateSite
or enter in the folder genstar.plugin.platform
and i run 'gradle:updateSite`, all works fine ...
There is something i really don't understand, do you have an idea of the problem in my bnd-platform comprehension ?
Thanks
when i try to use bnd-platform plugin with any plugin ( like java plugin) it gives me this error
* What went wrong:
A problem occurred evaluating root project 'bnd-test'.
> Failed to apply plugin [id 'org.standardout.bnd-platform']
> Cannot add task ':clean' as a task with that name already exists.
If added a dependency to `platformaux``:
dependencies {
platformaux 'the:dependency'
}
And disabled source-fetching in the platform-configuration:
platform {
// ...
fetchSources = false
}
While fetchSources
seems to work for dependencies added to the platform
-configuration, the source jars get fetched for those in platformaux
.
Hi,
This simply is a great Gradle plug-in!
Is there any way to rename the category heading "Target platform"?
Cheers,
Dann
When processing one of my libs with bnd-platform, suddenly (after an update) there's a Require-Capability
being added to the MANIFEST.MF
. This causes trouble, and I'd simply like get rid of it. I already tried something like this:
platform {
bundle 'org.seleniumhq.selenium:selenium-server:3.14.0'
bnd (group: 'org.seleniumhq.selenium') {
// trying to strip away the 'Require-Capability',
// but this does not work, as it is simply being
// added to the existing one :(
instruction 'Require-Capability', ''
}
}
Unfortunately, it does not work (see comment). In bnd, there obviously a switch to suppress this, but I'm not sure if/how this can be passed through bnd-platform?
hi @stempler ,
I'm OSGifying the TestNG 6.10, the P2 repo created successfully, but I can't install it to Eclipse due to error Missing requirement: testng Sources 6.10.0.rel (org.testng.source 6.10.0.rel) requires 'package javax.xml.parsers 0.0.0' but it could not be found
the "Import-Package" header of the TestaNG source bundle is below:
Import-Package: bsh;version="[2.0.0,3.0.0)";resolution:=optional,com.beu
st.jcommander;version="[1.7.0,3.0.0)";resolution:=optional,com.beust.jc
ommander.converters;version="[1.7.0,3.0.0)";resolution:=optional,com.go
ogle.inject;version="[1.2,1.3)";resolution:=optional,junit.framework;ve
rsion="[3.8.1, 5.0.0)";resolution:=optional,org.junit;resolution:=optio
nal,org.junit.runner;resolution:=optional,org.junit.runner.manipulation
;resolution:=optional,org.junit.runner.notification;resolution:=optiona
l,org.apache.tools.ant;version="[1.7.0, 2.0.0)";resolution:=optional,or
g.apache.tools.ant.taskdefs;version="[1.7.0, 2.0.0)";resolution:=option
al,org.apache.tools.ant.types;version="[1.7.0, 2.0.0)";resolution:=opti
onal,org.apache.tools.ant.types.resources;version="[1.7.0, 2.0.0)";reso
lution:=optional,org.apache.tools.ant.types.selectors;version="[1.7.0,
2.0.0)";resolution:=optional,org.yaml.snakeyaml;version="[1.6,2.0)";res
olution:=optional,org.yaml.snakeyaml.constructor;version="[1.6,2.0)";re
solution:=optional,org.yaml.snakeyaml.nodes;version="[1.6,2.0)";resolut
ion:=optional,javax.xml.parsers,javax.xml.xpath,org.w3c.dom,org.xml.sax
,org.xml.sax.helpers
I don't think we need "Import-Package" (or even "Export-Package") for a source bundle, so I tried to overwrite it, but it does not work:
platform {
override {
optionalImport 'javax.*'
}
bundle "org.testng:testng:${version}", {
bnd {
optionalImport 'com.google.common.*'
optionalImport 'org.w3c.*'
optionalImport 'org.xml.*'
version = versionWithQualifier
}
exclude module: 'ant'
}
// Nick: trying to overwrite the "Import-Package" header for a source bundle
bnd (group: 'org.testng', name: 'testng', version: version, classifier: 'sources') {
instruction 'Import-Package', "!"
}
bnd (name: 'bsh') {
optionalImport 'org.apache.bsf.*'
}
featureId 'org.testng.p2.feature'
featureName 'TestNG P2 Feature'
featureVersion versionWithQualifier
featureProvider 'TestNG Team'
categoryName 'TestNG P2 Libraries'
categoryId 'org.testng.p2.libraries'
useBndHashQualifiers false
useFeatureHashQualifiers false
defaultQualifier ''
downloadsDir = new File(System.properties['user.home'], '.bnd-eclipse')
eclipseMirror.linux.gtk.x86_64 = 'http://download.eclipse.org/eclipse/downloads/drops4/R-4.5.2-201602121500/eclipse-platform-4.5.2-linux-gtk-x86_64.tar.gz'
eclipseMirror.macosx.cocoa.x86_64 = 'http://download.eclipse.org/eclipse/downloads/drops4/R-4.5.2-201602121500/eclipse-platform-4.5.2-macosx-cocoa-x86_64.tar.gz'
}
I need an osgi bundle from a maven artifact. Due to the automatic dependency resolution I get log4j in a different version and with a different group id in my generated p2 repository. I don't get it how I can stop bnd-platform from creating a bundle for log4j. The documentation says "Both notations support adapting the dependency configuration as supported by Gradle, e.g. excluding specific transitive dependencies." but how can I achieve this (e.g. for the example in the doc.)?
platform {
// add pegdown as dependency to the platform configuration
bundle 'org.pegdown:pegdown:1.4.2'
}
Sorry for the stupid question.
Hi,
I would like to create multiple features inside one update site. The platform feature should be the "All" feature containing everything specified with transitive dependencies, additionally there should be a feature without some transitive dependencies.
I thought of something like this (the plugin names are fictive):
platform {
categoryId = 'fipro'
categoryName = 'fipro'
featureId = 'org.fipro.something.feature'
featureName = 'fipro All'
featureVersion = "1.0.0"
featureProvider = 'Dirk Fauth'
defaultQualifier = ''
useBndHashQualifiers = false
useFeatureHashQualifiers = false
defaultQualifierMap.prefix = ''
feature(id: 'org.fipro.sub.feature', name: 'fipro without slf4j') {
plugin "org.fipro:fipro-service:1.0.0", {
// exclude this transitive dependency
exclude group: 'org.slf4j', module: 'slf4j-api'
}
}
feature(id: 'org.fipro.something.feature', name: 'fipro All') {
plugin "org.fipro:fipro-service:1.0.0"
}
}
This should be possible with p2, but the generated feature.xml files are equal. It looks like the bundles that are configured in the feature.xml are simply a collection of all bundles in the bundles directory. The exclude is not taken into account on creating the xml file, only on downloading.
If you can give us a pointer on how this can be fixed, we could try to provide a pull request.
Greez,
Dirk
Is there a way to programmatically modify the imports in a bundle? I'm re-wrapping a bundle in order to modify some of its imports to change the versioning from MAJOR to MINIMUM. Right now I'm doing that by specifying a bnd
closure in which I'm using an instruction 'Import-Package'
to re-specify all of its imports.
I was wondering if there was a way to do this more like the custom version example in the README. I'd like to apply a versioning scheme to the imports of a bundle, filtering it to a subset of its imports using a group specification.
This tool is really useful! Great work!
I suggest to add a README file and a link to the example repo. WDYT?
Cheers,
Michel
Whenever I execute "./gradlew build", the task :bundles will be followed by a long list of "Could not retrieve POM" followed by a plugin name. The thing is that all these plugins are fetched from a repository that doesn't contain any POM files, which makes the whole task of trying to retrieve POMs a bit unnecessary.
I wonder if there's a way to prevent the task from trying to retrieve POMs?
Thankful for help.
I'm currently introducing bnd-platform in our project and stumble across the "optional dependencies".
I've already seen this existing issue and I understand the reasons, that the information about a dependency being optional gets lost.
Our situation: We have a comparatively large dependency tree and the only way to work around this issue which I've found so far is to repeatedly apply trial-and-error, i.e.:
org.osgi.framework.BundleException
with the Unresolved requirement
package being mentionedoptionalImport
configuration in my build.gradle
Are there any more elegant workarounds or am I overlooking something? Probably this problem should be addressed completely different on our side? Any feedback or suggestions are very welcome!
Hi
Are there any plans to support current Gradle version?
Best regards,
Seweryn
I'm adding a plugin to a eclipse rcp based product which comes as a zip-archive.
Until shortly, i've used custom gradle-code for adding the jars of my plugin, manipulating the metadata-files and repackaging the application and its update-site. As this was quite error-prone if switched to this plugin.
It works like a charm but i've still got one issue: the generated update-site contains a feature group and i cannot find a way to register this group to the application. The update-mechanism of the applications seems to install any feature (or feature group) which is not installed locally but exists in the update-site.
So after the first start of the application it connects to the update-site, detects the missing group and installs it - ignoring the version of my plugin already packaged with it.
This might be a problem of the update-mechanism of the application but my problem would by easily fixed if i could either prevent the bnd-platform-plugin from creating the superfluos group or knew how to tell the application that it already has the group installed.
So, is there a way to prevent the feature group from being created?
When I run on gradle 2.14, I get the following error:
Caused by: java.lang.NoClassDefFoundError: org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo
at org.standardout.gradle.plugin.platform.PlatformPlugin$_configureEnvironment_closure9.doCall(PlatformPlugin.groovy:328)
at org.standardout.gradle.plugin.platform.PlatformPlugin.configureEnvironment(PlatformPlugin.groovy:327)
at org.standardout.gradle.plugin.platform.PlatformPlugin$configureEnvironment.callCurrent(Unknown Source)
at org.standardout.gradle.plugin.platform.PlatformPlugin.apply(PlatformPlugin.groovy:67)
at org.standardout.gradle.plugin.platform.PlatformPlugin.apply(PlatformPlugin.groovy)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)
at org.gradle.api.internal.plugins.RuleBasedPluginApplicator.applyImperative(RuleBasedPluginApplicator.java:43)
at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:137)
at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:112)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:113)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:36)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:80)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:136)
at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:46)
at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34)
at org.gradle.api.Script$apply$2.callCurrent(Unknown Source)
Hi,
I use the bnd-platform plugin to create bundles from non bundle dependencies.
My idea is to publish these "bundleized" artifacts to our maven repository, so they can be used in other projects. However this is quite difficult as I found no way to know the targetFileName at configuration time.
My build so far:
apply plugin: 'maven-publish'
apply plugin: 'org.standardout.bnd-platform'
platform {
bundle(group: 'org.apache.lucene', name: 'lucene-core', version: '4.10.4') {
bnd {
instruction 'Export-Package', "org.apache.lucene.*"
}
}
}
publishToMavenLocal.dependsOn bundles
publishing {
publications {
// is there a better way to get the plattform bundles?
configurations.platform.dependencies.each { dep ->
create("mavenJava${dep.name}", MavenPublication){
groupId dep.group
artifactId dep.name
version "${dep.version}.bnd"
// how to get the transformed artifact file here ?
}
}
}
}
Hi,
my understanding of the fetchSources = true feature is
That all works fine. But unfortunately the created/downloaded source jars are also added to the base feature. But they should not be included there. They should only reside in the sources feature to separate function and sources for delivery.
From my understanding it is wrong to add the source jars also to the feature with the deliverables. They should only be part of the generated sources feature.
Trying to accomplish a merge of two bundles, one of which has a broken transitive dependency e.g.
// Excluding transitive doesn't seem supported
bundle ("org.apache.xmlbeans:xmlbeans-xpath:$version") {
transitive = false
}
Example file attached - build.gradle.txt
The issue is caused by xmlbeans-xpath, which has a well known broken dependency to a saxon-9 version that is not available under the same name any more.
Very new to both Gradle, Groovy, and bnd-platform so there may be ways to do this I don't know of. Also, I'd offer to pitch in to help code it - but same problem applies!
When I run on gradle 2.14, I get the following error:
Caused by: java.lang.NoClassDefFoundError: org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo
at org.standardout.gradle.plugin.platform.PlatformPlugin$_configureEnvironment_closure9.doCall(PlatformPlugin.groovy:328)
at org.standardout.gradle.plugin.platform.PlatformPlugin.configureEnvironment(PlatformPlugin.groovy:327)
at org.standardout.gradle.plugin.platform.PlatformPlugin$configureEnvironment.callCurrent(Unknown Source)
at org.standardout.gradle.plugin.platform.PlatformPlugin.apply(PlatformPlugin.groovy:67)
at org.standardout.gradle.plugin.platform.PlatformPlugin.apply(PlatformPlugin.groovy)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)
at org.gradle.api.internal.plugins.RuleBasedPluginApplicator.applyImperative(RuleBasedPluginApplicator.java:43)
at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:137)
at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:112)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:113)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:36)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:80)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:136)
at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:46)
at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34)
at org.gradle.api.Script$apply$2.callCurrent(Unknown Source)
We see a ton of these messages in our build output now our Gradle model is nearing completion.
Seems from the code that there could be a genuine warning case here for some uses, but it makes for an extremely noisy log. Would be nice to be able to specifically suppress this case without disabling all warning messages.
Note - I'm not exactly sure of the case of concern this is warning us of. Custom configurations seem a very common use-case in Gradle.
I have tried to apply bnd-platform to my project and managed to create an update site but as soon as I install my Eclipse plugin from the generated update site I get the following error in Eclipse:
Cannot complete the install because one or more required items could not be found.
Software being installed: bar 1.2.3.bnd-ZzR9VQ (foo.feature.group 1.2.3.bnd-ZzR9VQ)
Missing requirement: bar 1.2.3.bnd-ZzR9VQ (foo.feature.group 1.2.3.bnd-ZzR9VQ) requires 'org.eclipse.equinox.p2.iu; log4j [1.2.16,1.2.16]' but it could not be found
My gradle file looks like
platform {
featureId = 'foo'
featureName = 'bar'
featureVersion = '1.2.3'
bundle project(':MyProject')
}
Do you have an idea what went wrong or how I can track down the error?
Maybe I'm doing something wrong, but I have a plugin and the corresponding source plugin in a local maven repository. I'm trying to create a feature and updatesite from them, but I get the following exception when building the updatesite:
Status ERROR: org.eclipse.equinox.p2.artifact.repository code=0 Format "format(n[.n=0;[.n=0;[.S=[A-Za-z0-9_-];='';]]])" was unable to parse 1.0.0-SNAPSHOT java.lang.IllegalArgumentException: Format "format(n[.n=0;[.n=0;[.S=[A-Za-z0-9_-];='';]]])" was unable to parse 1.0.0-SNAPSHOT
Product publishing ended with the following exception:
java.lang.IllegalArgumentException: Format "format(n[.n=0;[.n=0;[.S=[A-Za-z0-9_-];='';]]])" was unable to parse 1.0.0-SNAPSHOT
at org.eclipse.equinox.internal.p2.metadata.VersionFormat.parse(VersionFormat.java:275)
at org.eclipse.equinox.internal.p2.metadata.VersionParser.parse(VersionParser.java:89)
at org.eclipse.equinox.p2.metadata.Version.create(Version.java:79)
at org.eclipse.equinox.p2.metadata.Version.parseVersion(Version.java:141)
at org.eclipse.equinox.p2.publisher.eclipse.FeatureEntry.<init>(FeatureEntry.java:63)
at org.eclipse.equinox.internal.p2.publisher.eclipse.FeatureManifestParser.processPlugin(FeatureManifestParser.java:236)
at org.eclipse.equinox.internal.p2.publisher.eclipse.FeatureManifestParser.startElement(FeatureManifestParser.java:270)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:357)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2787)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:118)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
at org.eclipse.equinox.internal.p2.publisher.eclipse.FeatureManifestParser.parse(FeatureManifestParser.java:126)
at org.eclipse.equinox.internal.p2.publisher.eclipse.FeatureParser.parse(FeatureParser.java:89)
at org.eclipse.equinox.p2.publisher.eclipse.FeaturesAction.getFeatures(FeaturesAction.java:518)
at org.eclipse.equinox.p2.publisher.eclipse.FeaturesAction.perform(FeaturesAction.java:604)
at org.eclipse.equinox.p2.publisher.Publisher$ArtifactProcess.run(Publisher.java:207)
at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.executeBatch(SimpleArtifactRepository.java:1294)
at org.eclipse.equinox.p2.publisher.Publisher.publish(Publisher.java:231)
at org.eclipse.equinox.p2.publisher.AbstractPublisherApplication.run(AbstractPublisherApplication.java:283)
at org.eclipse.equinox.p2.publisher.AbstractPublisherApplication.run(AbstractPublisherApplication.java:253)
at org.eclipse.equinox.p2.publisher.AbstractPublisherApplication.start(AbstractPublisherApplication.java:315)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.equinox.internal.app.AnyThreadAppLauncher.run(AnyThreadAppLauncher.java:26)
at java.lang.Thread.run(Thread.java:745)
Looking at the Features shows that one source plugin has an incorrect maven-like version number:
<feature id="xxx" label="xxx" version="1.0.0.bnd-65Nwvw" provider-name="xxx">
<plugin id="my.plugin" download-size="0" install-size="0" version="1.0.0.201608151337" unpack="false"/>
<plugin id="my.plugin.source" download-size="0" install-size="0" version="1.0.0-SNAPSHOT" unpack="false"/>
<plugin id="org.apache.batik.dom" download-size="0" install-size="0" version="1.6.0.v201011041432" unpack="false"/>
<plugin id="org.apache.batik.dom.svg" download-size="0" install-size="0" version="1.6.0.v201011041432" unpack="false"/>
<plugin id="org.apache.batik.transcoder" download-size="0" install-size="0" version="1.6.0.v201011041432" unpack="false"/>
<plugin id="org.apache.batik.util" download-size="0" install-size="0" version="1.6.0.v201011041432" unpack="false"/>
<plugin id="org.apache.batik.xml" download-size="0" install-size="0" version="1.6.0.v201011041432" unpack="false"/>
<plugin id="org.eclipse.birt" download-size="0" install-size="0" version="4.3.2.v201308301349" unpack="false"/>
<plugin id="org.eclipse.core.commands" download-size="0" install-size="0" version="3.6.100.v20130515-1857" unpack="false"/>
<plugin id="org.eclipse.core.commands.source" download-size="0" install-size="0" version="3.6.100.v20130515-1857" unpack="false"/>
<plugin id="org.eclipse.core.jobs" download-size="0" install-size="0" version="3.5.300.v20130429-1813" unpack="false"/>
<plugin id="org.eclipse.core.jobs.source" download-size="0" install-size="0" version="3.5.300.v20130429-1813" unpack="false"/>
<plugin id="org.eclipse.core.runtime" download-size="0" install-size="0" version="3.9.0.v20130326-1255" unpack="false"/>
<plugin id="org.eclipse.core.runtime.source" download-size="0" install-size="0" version="3.9.0.v20130326-1255" unpack="false"/>
<plugin id="org.eclipse.draw2d" download-size="0" install-size="0" version="3.10.100.201606061308" unpack="false"/>
<plugin id="org.eclipse.e4.core.contexts" download-size="0" install-size="0" version="1.3.1.v20130905-0905" unpack="false"/>
<plugin id="org.eclipse.e4.core.contexts.source" download-size="0" install-size="0" version="1.3.1.v20130905-0905" unpack="false"/>
<plugin id="org.eclipse.emf.common" download-size="0" install-size="0" version="2.9.1.v20130827-0309" unpack="false"/>
<plugin id="org.eclipse.emf.ecore" download-size="0" install-size="0" version="2.9.1.v20130827-0309" unpack="false"/>
<plugin id="org.eclipse.emf.edit" download-size="0" install-size="0" version="2.5.0.v200906151043" unpack="false"/>
<plugin id="org.eclipse.equinox.common" download-size="0" install-size="0" version="3.6.200.v20130402-1505" unpack="false"/>
<plugin id="org.eclipse.equinox.common.source" download-size="0" install-size="0" version="3.6.200.v20130402-1505" unpack="false"/>
<plugin id="org.eclipse.equinox.registry" download-size="0" install-size="0" version="3.5.301.v20130717-1549" unpack="false"/>
<plugin id="org.eclipse.equinox.registry.source" download-size="0" install-size="0" version="3.5.301.v20130717-1549" unpack="false"/>
<plugin id="org.eclipse.gef" download-size="0" install-size="0" version="3.11.0.201606061308" unpack="false"/>
<plugin id="org.eclipse.jface" download-size="0" install-size="0" version="3.9.1.v20130725-1141" unpack="false"/>
<plugin id="org.eclipse.jface.source" download-size="0" install-size="0" version="3.9.1.v20130725-1141" unpack="false"/>
<plugin id="org.eclipse.swt" download-size="0" install-size="0" version="3.102.1.v20130827-2021" unpack="false"/>
<plugin id="org.eclipse.swt.gtk.linux.x86_64" download-size="0" install-size="0" version="3.102.1.v20130827-2048" unpack="false"/>
<plugin id="org.eclipse.swt.gtk.linux.x86_64.source" download-size="0" install-size="0" version="3.102.1.v20130827-2048" unpack="false"/>
<plugin id="org.eclipse.ui" download-size="0" install-size="0" version="3.105.0.v20130522-1122" unpack="false"/>
<plugin id="org.eclipse.ui.forms" download-size="0" install-size="0" version="3.6.1.v20130822-1117" unpack="false"/>
<plugin id="org.eclipse.ui.forms.source" download-size="0" install-size="0" version="3.6.1.v20130822-1117" unpack="false"/>
<plugin id="org.eclipse.ui.source" download-size="0" install-size="0" version="3.105.0.v20130522-1122" unpack="false"/>
<plugin id="org.eclipse.ui.views.properties.tabbed" download-size="0" install-size="0" version="3.6.0.v20130515-1857" unpack="false"/>
<plugin id="org.eclipse.ui.views.properties.tabbed.source" download-size="0" install-size="0" version="3.6.0.v20130515-1857" unpack="false"/>
<plugin id="org.eclipse.ui.workbench" download-size="0" install-size="0" version="3.105.1.v20130821-1411" unpack="false"/>
<plugin id="org.eclipse.ui.workbench.source" download-size="0" install-size="0" version="3.105.1.v20130821-1411" unpack="false"/>
<plugin id="osgi.core" download-size="0" install-size="0" version="6.0.0.201403061837" unpack="false"/>
</feature>
The corresponding binary plugin has a correct version, so I'm not sure what's going on here. Disabling the source plugins with
platform {
fetchSources = false
}
solves the problem, but I would like to include the sources on my updatesite.
Also I'm wondering if it's possible to remove the org.eclipse.* plugins from the feature/updatesite because while they're a dependency, I don't really want to publish them in my own updatesite.
Thanks for contributing this great tool! It worked perfectly for me so far, but I stumbled over one issue.
Using the 'exclude group' statement for a plugin in a defined feature seems to have no effect, or I maybe misunderstood its purpose.
I created a minimal example to illustrate this:
buildscript {
repositories {
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'org.standardout:bnd-platform:1.4.0'
}
}
apply plugin: 'org.standardout.bnd-platform'
repositories {
mavenCentral()
}
dependencies {
platform 'org.codehaus.groovy.modules.http-builder:http-builder:0.6'
}
platform {
bundle 'org.codehaus.groovy.modules.http-builder:http-builder:0.6'
feature(id: 'platform.restclient', name: 'REST client dependencies', version: '1.0.0') {
// define what's in the feature
plugin 'org.codehaus.groovy.modules.http-builder:http-builder:0.6', {
// exclude this transitive dependency
exclude group: 'net.sourceforge.nekohtml', module: 'nekohtml'
}
}
// If you have an Eclipse installation available, you may want to set the env. variable
// ECLIPSE_HOME with its path, that will prevent the BND plugin to download it.
// As of today, the version downloaded by default is:
// http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/indigo/SR2/eclipse-rcp-indigo-SR2-win32-x86_64.zip
if ( System.getenv("ECLIPSE_HOME") != null )
eclipseHome = new File(System.getenv("ECLIPSE_HOME"))
}
This should create an update site with a feature, composed of all transitive dependencies of the http-builder, except 'net.sourceforge.nekohtml'. Right?
However, in the resulting feature.xml I find the following:
<plugin id="net.sourceforge.nekohtml" download-size="0" install-size="0" version="1.9.16.bnd-y0MRJw" unpack="false" />
<plugin id="net.sourceforge.nekohtml.source" download-size="0" install-size="0" version="1.9.16.bnd-y0MRJw" unpack="false" />
I use these commands to run the build:
export ECLIPSE_HOME="C:/your_eclipse_install"
gradle updateSiteZip
FANTASTIC PLUGIN - thanks so much!
Gradle doesn't have a good way to consume P2 repositories, which means a lot of people (myself included) are using unpuzzle, a plugin which downloads an Eclipse zip, then puts all of those jars into a local maven repository, which you can then use in Gradle.
This means that some libraries are available twice. e.g. Eclipse has "org.hamcrest.core", which unpuzzle turns into the maven coordinate eclipseMavenGroup:org.hamcrest.core
, and Maven Central has that exact same library available as org.hamcrest:hamcrest-core
. I've got a big project with tons of dependencies, and it ends up that when I run the bundles
task, I end up with a few duplicates:
org.hamcrest.core_1.3.0.autowrapped.jar
from bnd-platformorg.hamcrest.core_1.3.0.v201303031735.jar
from unpuzzle (which is raw from Eclipse)It's difficult to fix this, because if I need eclipseMavenGroup:something
, I automatically end up with eclipseMavenGroup:org.hamcrest.core
through transitive dependencies. And if I need org.junit:junit
I also end up with org.hamcrest:hamcrest-core
through transitives.
Right now, I work around this issue with the following snippet:
platform {
useBndHashQualifiers = false
}
// for a few plugins, we're getting the OSGI plugin AND a wrapped maven jar
// this deletes the wrapped maven jar, leaving only the OSGI plugin
bundles.doLast {
def allFiles = project.fileTree('build/plugins').collectNested { it.name }
def toDelete = []
allFiles.each { plugin ->
def split = plugin.indexOf('_') + 1
def version = plugin.substring(split)
// if it's a bnd plugin
if (version.contains('autowrapped')) {
// get the name (including the _ delimiter)
def name = plugin.substring(0, split)
// look for matching non-bnd plugins
allFiles.each {
if (it.startsWith(name) && !it.equals(plugin)) {
def betterVersion = it.substring(it.indexOf('_') + 1)
logger.warn("delete duplicate ${plugin}: ${betterVersion} is better than {version}")
project.file('build/plugins/' + plugin).delete()
}
}
}
}
}
Which outputs this on my project:
delete duplicate com.jcraft.jsch_0.1.51.autowrapped.jar: 0.1.51.v201410302000.jar is better than 0.1.51.autowrapped.jar
delete duplicate org.hamcrest.core_1.3.0.autowrapped.jar: 1.3.0.v201303031735.jar is better than 1.3.0.autowrapped.jar
I think that bnd-platform
should realize if it's creating duplicate plugins, and probably throw an error, or at least a warning. It would then be nice if the dsl has a way to say "I know there's a duplicate, I want X", or maybe "everytime there's a duplicate, always drop the wrapped version".
Not urgent though, the workaround above works just fine :)
Hi,
I have the following build.gradle file and the referenced line specifies a feature.
The strange thing is that this feature does not contain io.netty.transport-native-epoll_4.1.34.Final, which is actually downloaded and resides inside the plugins folder, but unfortunately it is not mentioned in the feature.xml file.
Does anyone have an idea why this happens?
Using bnd-platform on gradle 2.6+ fails with NoSuchMethodError: org.gradle.logging.ProgressLogger.setDescription(Ljava/lang/String;)
This seems related to michel-kraemer/gradle-download-task#29
Hi Simon,
since a lot of new features came in recently. What do you think of releasing 1.6 and provide 1.7 snapshot on maven central?
I currently always call "./gradlew publishToMavenLocal" and use my "mavenLocal()" repo to use the latest features, but for the the customers of the vogella company it would be great to also make use of the 1.7 snapshot.
Thanks and regards, Simon
When I run on gradle 2.14, I get the following error:
Caused by: java.lang.NoClassDefFoundError: org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo
at org.standardout.gradle.plugin.platform.PlatformPlugin$_configureEnvironment_closure9.doCall(PlatformPlugin.groovy:328)
at org.standardout.gradle.plugin.platform.PlatformPlugin.configureEnvironment(PlatformPlugin.groovy:327)
at org.standardout.gradle.plugin.platform.PlatformPlugin$configureEnvironment.callCurrent(Unknown Source)
at org.standardout.gradle.plugin.platform.PlatformPlugin.apply(PlatformPlugin.groovy:67)
at org.standardout.gradle.plugin.platform.PlatformPlugin.apply(PlatformPlugin.groovy)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)
at org.gradle.api.internal.plugins.RuleBasedPluginApplicator.applyImperative(RuleBasedPluginApplicator.java:43)
at org.gradle.api.internal.plugins.DefaultPluginManager.doApply(DefaultPluginManager.java:137)
at org.gradle.api.internal.plugins.DefaultPluginManager.apply(DefaultPluginManager.java:112)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.applyType(DefaultObjectConfigurationAction.java:113)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.access$200(DefaultObjectConfigurationAction.java:36)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction$3.run(DefaultObjectConfigurationAction.java:80)
at org.gradle.api.internal.plugins.DefaultObjectConfigurationAction.execute(DefaultObjectConfigurationAction.java:136)
at org.gradle.api.internal.project.AbstractPluginAware.apply(AbstractPluginAware.java:46)
at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34)
at org.gradle.api.Script$apply$2.callCurrent(Unknown Source)
First of all: bnd-platform looks like THE tool I've been looking for so long. I'm really looking forward to replace our self-built OSGi re-wrapping toolchain, which is a nightmare to maintain. So, thank you very much for making it, it will save lots of my precious time!!
I'm currently trying to create a bundle for Selenium 3.4.0, and because of "split packages" across JARs and all the issues they cause, I want to merge all Selenium JARs into a single one.
Here's my build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.standardout:bnd-platform:1.5.0'
}
}
apply plugin: 'org.standardout.bnd-platform'
repositories {
jcenter()
}
platform {
// def seleniumVersion = '2.53.1' // the older version works
def seleniumVersion = '3.4.0'
merge(failOnDuplicate: false) {
match {
it.group == 'org.seleniumhq.selenium'
}
bnd {
symbolicName = 'org.seleniumhq.selenium.selenium-java-merged'
bundleName = 'selenium-java-merged'
version = seleniumVersion
instruction 'Export-Package', "org.openqa.selenium.*;version=$version"
instruction 'Private-Package', '*'
}
}
bundle("org.seleniumhq.selenium:selenium-java:$seleniumVersion")
}
This gives me the following NPE:
$ gradle clean uS --stacktrace
> Task :bundles
Merging jars selenium-edge-driver-3.4.0.jar,htmlunit-driver-2.26.jar,selenium-firefox-driver-3.4.0.jar,selenium-ie-driver-3.4.0.jar,selenium-java-3.4.0.jar,selenium-remote-driver-3.4.0.jar,selenium-opera-driver-3.4.0.jar,selenium-chrome-driver-3.4.0.jar,selenium-api-3.4.0.jar,selenium-safari-driver-3.4.0.jar,selenium-support-3.4.0.jar - the jars will not be available as separate bundles
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bundles'.
> java.lang.NullPointerException (no error message)
* Try:
Run with --info or --debug option to get more log output.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':bundles'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:242)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:235)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:224)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:121)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:77)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:102)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:96)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:612)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:567)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:96)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.NullPointerException
at aQute.bnd.osgi.Jar.remove(Jar.java:659)
at aQute.bnd.osgi.Jar$remove$2.call(Unknown Source)
at org.standardout.gradle.plugin.platform.internal.util.bnd.BundleHelper.mergeJars(BundleHelper.groovy:281)
at org.standardout.gradle.plugin.platform.internal.util.bnd.BundleHelper$mergeJars$0.callStatic(Unknown Source)
at org.standardout.gradle.plugin.platform.internal.util.bnd.BundleHelper.merge(BundleHelper.groovy:239)
at org.standardout.gradle.plugin.platform.internal.util.bnd.BundleHelper$merge.call(Unknown Source)
at org.standardout.gradle.plugin.platform.internal.config.Configurations$_createBundles_closure3.doCall(Configurations.groovy:128)
at org.standardout.gradle.plugin.platform.internal.config.Configurations.createBundles(Configurations.groovy:125)
at org.standardout.gradle.plugin.platform.internal.config.Configurations$createBundles$1.call(Unknown Source)
at org.standardout.gradle.plugin.platform.internal.BundlesAction.execute(BundlesAction.groovy:217)
at org.standardout.gradle.plugin.platform.internal.BundlesAction.execute(BundlesAction.groovy)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:711)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:694)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
... 27 more
BUILD FAILED in 2s
2 actionable tasks: 2 executed
Interesting observation: When building the older version of Selenium 2.53.1, the build works fine. So I'd assume that the issue is caused by some dependency?
I'm currently experiencing the following build error (our CI doesn't cache the downloaded Eclipse, so this is starting without any cache).
Anyone else with this issue?
โFixedโ it for now, by manually setting eclipseMirror
to use HTTP instead of HTTPS.
18:43:05.573 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] issuer principal: CN=DigiCert Global CA G2, O=DigiCert Inc, C=US
18:43:05.573 [DEBUG] [org.apache.http.conn.ssl.DefaultHostnameVerifier] Certificate for <d29vzk4ow07wi7.cloudfront.net> doesn't match any of the subject alternative names: [*.cloudfront.net, cloudfront.net]
javax.net.ssl.SSLException: Certificate for <d29vzk4ow07wi7.cloudfront.net> doesn't match any of the subject alternative names: [*.cloudfront.net, cloudfront.net]
at org.apache.http.conn.ssl.DefaultHostnameVerifier.matchDNSName(DefaultHostnameVerifier.java:157)
at org.apache.http.conn.ssl.DefaultHostnameVerifier.verify(DefaultHostnameVerifier.java:108)
at org.apache.http.conn.ssl.DefaultHostnameVerifier.verify(DefaultHostnameVerifier.java:86)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:461)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:395)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:353)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
at de.undercouch.gradle.tasks.download.DownloadAction.openConnection(DownloadAction.java:430)
at de.undercouch.gradle.tasks.download.DownloadAction.execute(DownloadAction.java:191)
at de.undercouch.gradle.tasks.download.DownloadAction.execute(DownloadAction.java:140)
at de.undercouch.gradle.tasks.download.DownloadExtension.configure(DownloadExtension.java:44)
at de.undercouch.gradle.tasks.download.DownloadExtension.configure(DownloadExtension.java:29)
at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:104)
at org.gradle.util.ConfigureUtil$1.execute(ConfigureUtil.java:123)
at org.gradle.api.internal.plugins.ExtensionsStorage$ExtensionHolder.configure(ExtensionsStorage.java:173)
at org.gradle.api.internal.plugins.ExtensionsStorage.configureExtension(ExtensionsStorage.java:70)
at org.gradle.api.internal.plugins.DefaultConvention.configureExtension(DefaultConvention.java:367)
at org.gradle.api.internal.plugins.DefaultConvention.access$500(DefaultConvention.java:45)
at org.gradle.api.internal.plugins.DefaultConvention$ExtensionsDynamicObject.tryInvokeMethod(DefaultConvention.java:310)
at org.gradle.internal.metaobject.CompositeDynamicObject.tryInvokeMethod(CompositeDynamicObject.java:98)
at org.gradle.internal.metaobject.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:30)
at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:160)
at org.gradle.api.internal.project.DefaultProject_Decorated.invokeMethod(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.standardout.gradle.plugin.platform.PlatformPlugin.downloadAndExtractEclipse(PlatformPlugin.groovy:386)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
at org.standardout.gradle.plugin.platform.PlatformPlugin$_apply_closure6.doCall(PlatformPlugin.groovy:206)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at groovy.lang.Closure.call(Closure.java:414)
at groovy.lang.Closure.call(Closure.java:430)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:670)
at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:651)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:242)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:235)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:224)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:121)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:77)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:102)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:96)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:612)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:567)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:96)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:57)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:122)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:46)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:253)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:170)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:44)
at org.gradle.initialization.DefaultGradleLauncher$1.run(DefaultGradleLauncher.java:122)
at org.gradle.internal.work.DefaultWorkerLeaseService$2.execute(DefaultWorkerLeaseService.java:124)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:116)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:99)
at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:66)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:95)
at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40)
at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:44)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:51)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:32)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:64)
at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:29)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:55)
at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:50)
at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:30)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:62)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
18:43:05.576 [DEBUG] [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-outgoing-11: Shutdown connection
18:43:05.576 [DEBUG] [org.apache.http.impl.execchain.MainClientExec] Connection discarded
18:43:05.576 [DEBUG] [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-outgoing-11: Close connection
18:43:05.576 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection released: [id: 11][route: {s}->https://d29vzk4ow07wi7.cloudfront.net:443][total kept alive: 1; route allocated: 0 of 2; total allocated: 1 of 20]
18:43:05.576 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection manager is shutting down
18:43:05.577 [DEBUG] [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-outgoing-10: Close connection
18:43:05.577 [DEBUG] [org.apache.http.impl.conn.DefaultManagedHttpClientConnection] http-outgoing-10: Close connection
18:43:05.577 [DEBUG] [org.apache.http.impl.conn.PoolingHttpClientConnectionManager] Connection manager shut down
18:43:05.577 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Execute task action 1/1 for :updatesite:checkEclipse'
18:43:05.577 [DEBUG] [org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter] Removed task artifact state for {} from context.
18:43:05.577 [DEBUG] [org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter] Finished executing task ':updatesite:checkEclipse'
18:43:05.577 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Task :updatesite:checkEclipse'
18:43:05.578 [null] [org.gradle.internal.progress.DefaultBuildOperationExecutor]
18:43:05.578 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Build operation 'Task :updatesite:checkEclipse' completed
18:43:05.578 [INFO] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] :updatesite:checkEclipse (Thread[Daemon worker Thread 6,5,main]) completed. Took 0.493 secs.
18:43:05.578 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Worker lease root.1.9 completed (1 worker(s) in use)
18:43:05.578 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Daemon worker Thread 6: released lock on root.1.9
18:43:05.578 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Daemon worker Thread 6: released lock on :
18:43:05.578 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Daemon worker Thread 6,5,main]] finished, busy: 0.532 secs, idle: 1 mins 5.584 secs
18:43:05.578 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker Thread 2,5,main]] finished, busy: 1 mins 5.147 secs, idle: 0.969 secs
18:43:05.578 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker Thread 3,5,main]] finished, busy: 0.0 secs, idle: 1 mins 6.116 secs
18:43:05.578 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskPlanExecutor] Task worker [Thread[Task worker,5,main]] finished, busy: 0.43 secs, idle: 1 mins 5.687 secs
18:43:05.579 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Run tasks'
18:43:05.580 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
18:43:05.580 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
18:43:05.580 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
18:43:05.580 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
18:43:05.580 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':updatesite:checkEclipse'.
18:43:05.581 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Could not download file
18:43:05.581 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
18:43:05.581 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
18:43:05.581 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace.
18:43:05.581 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger]
18:43:05.581 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 1m 9s
18:43:05.581 [LIFECYCLE] [org.gradle.internal.buildevents.BuildResultLogger] 11 actionable tasks: 11 executed
18:43:05.581 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Worker lease root.1 completed (0 worker(s) in use)
18:43:05.581 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Daemon worker Thread 6: released lock on root.1
18:43:05.582 [DEBUG] [org.gradle.internal.progress.DefaultBuildOperationExecutor] Completing Build operation 'Run build'
18:43:05.596 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for task history cache (/***/.gradle/4.0/taskHistory)
18:43:05.596 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache taskHistory.bin (/***/.gradle/4.0/taskHistory/taskHistory.bin)
18:43:05.596 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache fileSnapshots.bin (/***/.gradle/4.0/taskHistory/fileSnapshots.bin)
18:43:05.597 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on task history cache (/***/.gradle/4.0/taskHistory).
18:43:05.598 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.CachedStoreFactory] Resolution result cache closed. Cache reads: 3, disk reads: 57 (avg: 0.0 secs, total: 0.019 secs)
18:43:05.598 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.CachedStoreFactory] Resolution result cache closed. Cache reads: 0, disk reads: 0 (avg: 0.0 secs, total: 0.0 secs)
18:43:05.605 [DEBUG] [org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.ResolutionResultsStoreFactory] Deleted 6 resolution results binary files in 0.008 secs
18:43:05.605 [DEBUG] [org.gradle.cache.internal.DefaultCacheAccess] Cache Plugin Resolution Cache (/***/.gradle/caches/4.0/plugin-resolution) was closed 0 times.
18:43:05.605 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for Artifact transforms cache (/***/.gradle/caches/transforms-1)
18:43:05.606 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on Artifact transforms cache (/***/.gradle/caches/transforms-1).
18:43:05.611 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for file hash cache (/***/.gradle/4.0/fileHashes)
18:43:05.612 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache fileHashes.bin (/***/.gradle/4.0/fileHashes/fileHashes.bin)
18:43:05.612 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on file hash cache (/***/.gradle/4.0/fileHashes).
18:43:05.612 [DEBUG] [org.gradle.deployment.internal.DefaultDeploymentRegistry] Stopping 0 deployment handles
18:43:05.612 [DEBUG] [org.gradle.deployment.internal.DefaultDeploymentRegistry] Stopped deployment handles
18:43:05.612 [DEBUG] [org.gradle.cache.internal.DefaultCacheAccess] Cache Generated Gradle JARs cache (/***/.gradle/caches/4.0/generated-gradle-jars) was closed 0 times.
18:43:05.613 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for artifact cache (/***/.gradle/caches/modules-2)
18:43:05.613 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache artifact-at-repository.bin (/***/.gradle/caches/modules-2/metadata-2.23/artifact-at-repository.bin)
18:43:05.613 [DEBUG] [org.gradle.cache.internal.btree.BTreePersistentIndexedCache] Closing cache module-metadata.bin (/***/.gradle/caches/modules-2/metadata-2.23/module-metadata.bin)
18:43:05.613 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on artifact cache (/***/.gradle/caches/modules-2).
18:43:05.614 [DEBUG] [org.gradle.launcher.daemon.server.exec.ExecuteBuild] The daemon has finished executing the build.
18:43:05.684 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientInputForwarder] Dispatching close input message: org.gradle.launcher.daemon.protocol.CloseInput@58f75804
18:43:05.684 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 13: dispatching class org.gradle.launcher.daemon.protocol.CloseInput
18:43:05.686 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClient] Received result Failure[value=org.gradle.initialization.ReportedException: org.gradle.internal.exceptions.LocationAwareException: Execution failed for task ':updatesite:checkEclipse'.] from daemon DaemonInfo{pid=83085, address=[070d12dd-0bc7-4d66-b327-93369260bd7a port:55412, addresses:[/0:0:0:0:0:0:0:1, /127.0.0.1]], state=Idle, lastBusy=1533746058980, context=DefaultDaemonContext[uid=f3eba5c8-24f3-425a-a6d3-5f6e6219136b,javaHome=/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home,daemonRegistryDir=/***/.gradle/daemon,pid=83085,idleTimeout=10800000,daemonOpts=-XX:MaxPermSize=256m,-XX:+HeapDumpOnOutOfMemoryError,-Xmx1024m,-Dfile.encoding=UTF-8,-Duser.country=DE,-Duser.language=de,-Duser.variant]} (build should be done).
18:43:05.686 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: dispatching class org.gradle.launcher.daemon.protocol.Finished
18:43:05.688 [DEBUG] [org.gradle.launcher.daemon.client.DaemonClientConnection] thread 1: connection stop
If I have multiple bundles, not all are downloaded / converted. For example, if I use the following script and run "gradle clean Us" the yasson_1.0.6.jar is not created. I need to run "gradle Us" again to create it.
/*
build an update site that contains all commonly used dependencies
from external repositories to be selectively added to the targetPlatform
*/
plugins {
id "org.standardout.bnd-platform" version "1.7.0"
}
repositories {
mavenCentral()
}
platform {
// configure proper names for the p2 update site
categoryId = 'test'
categoryName = 'externalRepositories'
featureId = 'test'
featureName = 'All components coming from external repositories to be used in target platform'
featureVersion = '1.0'
featureProvider = 'test'
defaultQualifier = ''
useBndHashQualifiers = false
useFeatureHashQualifiers = false
defaultQualifierMap.prefix = ''
bundle('com.itextpdf:itext7-core:7.1.11')
bundle('org.emfjson:emfjson-jackson:1.3.0')
bundle('org.slf4j:slf4j-simple:1.6.0')
bundle('org.apache.pdfbox:pdfbox:2.0.17')
bbundle('org.apache.tika:tika:1.24.1')
bundle('net.sf.ucanaccess:ucanaccess:5.0.0')
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.