Giter Club home page Giter Club logo

bnd-platform's People

Contributors

chrjo5 avatar florianesser avatar missedone avatar nedtwigg avatar qqilihq avatar renovate[bot] avatar rgregor avatar sdkrach avatar simonscholz avatar stempler avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bnd-platform's Issues

Optional dependencies

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.

Generated updatesite not working due to missing filters

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>
        (&amp;(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&#xA;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>
            (&amp;(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>
            (&amp;(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>
            (&amp;(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>
            (&amp;(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...

Setting buildDir does not work

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 .

[feature request] support download Eclipse outside of project folder

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.

extracting Bundle-License from pom.xml does not work

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"
	}

Prevent platform_feature creation

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

Merging one bundle, keeping other bundle separate

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.

OptionalImport not working

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

SNAPSHOT and addQualifier

How hard would it be to add logic which sets addQualifier to true iff the version ends in SNAPSHOT?

Can't create feature dependencies

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?

Flag to disable import mecanism during p2 repository creation ?

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 ?

random jar artifact converted to bundle

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') {

Download bundles from existing p2 sites

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.

version of source feature not substituted

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?

Only transitive dependencies being bundled without parent plugin

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!

Gradle 6 Incompatibility

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!

Source Bundle for current gradle Project

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!

Unsupported major.minor version 51.0

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] -----------------------------------------------------

Getting java.util.NoSuchElementException on updateSite goal

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.

  • What went wrong:
    Execution failed for task ':updateSite'.

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

About updateSite run from root folder ?

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 :

  • target.p2 from goomph which take apply com.diffplug.gradle.p2.asmaven and downloads dependencies from a p2 repository and makes them available in a local maven repository
  • target.maven wrap maven jar dependencies downloaded to osgi bundle using bnd-platform
  • genstar.plugin.bundle-all compile the sources using all maven sources ( downloaded from p2 + maven)
  • genstar.plugin.bundle-all create and deploy the plugin/features eclipse site with genstar.plugin.bundle-all jar using bnd-platform updateSite task

When 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

Error using bnd-platform plugin with other plugin

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.

Configuration platformaux seems to ignore fetchSources = false

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.

Avoid 'Require-Capability' header?

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?

can't overwrite OSGi header for source bundle

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'
}

How to remove dependency while creating p2 update site?

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.

Create multiple features with different content

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

Question about re-wrapping bundles

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.

Create README

This tool is really useful! Great work!

I suggest to add a README file and a link to the example repo. WDYT?

Cheers,
Michel

"Could not retrieve POM" spam

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.

Handling of "optional" dependencies

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.:

  1. Build the update site
  2. Load it into Eclipse's target platform
  3. Try to launch my app
  4. Get an org.osgi.framework.BundleException with the Unresolved requirement package being mentioned
  5. Add that package to the optionalImport configuration in my build.gradle
  6. GOTO 1)

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!

Is it possible to prevent feature-group in generated update-site

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?

4

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)

Make it possible to publish platform bundles with maven-publish plugin

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 ?
            }
        }
    }
}

fetchSources = true adds source bundles to feature

Hi,

my understanding of the fetchSources = true feature is

  • the sources are downloaded
  • source bundles from the downloaded sources are generated or simply used if such bundles already exist
  • a source feature is created additionally to the feature

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.

Be very useful if bundle could support transitive = false

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!

Can't run on gradle 2.14

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)

'Adding custom configuration to default bnd configuration' log noise

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.

Generated update site does not work

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?

Illegal version for source feature

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.

Cannot exclude plugins from feature

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

If an OSGI and a non-OSGI plugin are both available, bnd-platform OSGI-ifies the non-OSGI plugin

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-platform
  • org.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 :)

feature.xml does not contain all dependencies

Hi,

I have the following build.gradle file and the referenced line specifies a feature.

https://github.com/OpenReqEU/eclipse-plugin-vogella/blob/f73c3cb57e0b1552b8f45a9efd02534a067ea6f8/eclipse/dependencies/build.gradle#L51

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?

Create 1.6 release and publish 1.7 snapshot?

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

4

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)

NullPointerException during bundle merging

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?

SSL issues with cloudfront.net when trying to download Eclipse

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

Not all bundles are downloaded

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')
	
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.