Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [tycho-user] [tycho-dev] <optionalDependencies> configuration parameter

On 03/01/2012 16:06, Oberlies, Tobias wrote:
Igor Fedorenko wrote:
In order to handle optional dependencies, we've introduced new
<optionalDependencies> configuration parameter. If the parameter set to
"require", the default, Tycho will treat optional dependencies as
required and will fail the build if any of the optional dependencies is
missing or cannot be resolved for some other reason. If set to "ignore",
Tycho will completely ignore the optional dependencies.

The behaviour described above controls project compile classpath and
contents of OSGi test runtime of eclipse-test-plugin project.
Currently, this doesn't work reliably [1].

IMHO the requirements for the test runtime are generally different to what is needed for compilation, so I think there should be separate parameters for each.

True (except that I met that more "sometimes" than "generally"), but you have different poms and artifacts for your bundles and your tests, So you already can configure your build and tests independently - you can have bundle with optionalDepedencies=require and bundle.test with optionalDependencies=ignore. The only case that justifies the need for several flags for compile and test is if your test has some optional depdendencies you don't want to have in the platform when running this test... I am not sure it is so a valid use-case.

Does ignoring optional-dependencies during compilation really make sense? PDE Tooling automatically adds them to the build path, and I don't think many people complained about that, so I am not sure whether this should be necessary to make that a compile option. However, I am still not sure on how OSGi optional dependencies are actually used and should be used, it looks more like a hack to avoid splitting a bundle into 2 parts...
Considering optional-dependencies is only relevent when installing or preparing a runtime platform. So the flag only makes sense for Tycho plugins that will perform a call to p2.
It is possible that some people want to have only _some of_ the optionalDependencies available. In that case, using the <dependency/> element in tycho-surefire-plugin, or putting an explicit dependency in the bundle.test MANIFEST.MF (which is useless at compilation, but often necessary for execution, see [1]) work well.

Tycho already provides good ways to control the test runtime.

Do you have other use cases than the "tycho can't compile against optional dependencies" one? If not, maybe just adding by default optional dependencies just for tycho-compiler-plugin would be enough.

My 2c ;)

[1] http://mickaelistria.wordpress.com/2011/09/27/swtbot-tip-of-the-day-explicit-your-test-depends-on-ui-contributors/
--

Mickael Istria
R&D Engineer, Eclipse Plug-in RCP Developer

PetalsLink - Open Source SOA

My blog - My Tweets


Back to the top