[
https://issues.apache.org/jira/browse/KARAF-3597?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14996406#comment-14996406
]
Markus Rathgeb commented on KARAF-3597:
---------------------------------------
Has this been reproduced? I build a working example to reproduce this issue,
too.
For karaf-maven-plugin 4.0.2 the Dependency31Helper (same for
Dependency30Helper with different line numbers) builds the dependency tree
using the getDependencyTree function (line 106ff).
The ScopeDependencySelector2 function (used through ScopeDependencySelector1 --
see function comment) filters the test and runtime scopes.
So, why do we filter runtime scope?
Let's consider the following example:
An artifact contains a configuration file that contains e.g. some class name
that should be used for a given functionality. That configured value is read at
runtime and used. So, the referenced class and the artifact that contains that
class is only needed at runtime.
Is this not a very "normal" use case for Spring / JSP where you configure
classes in XML files?
Sure, we could configure the dependency with scope compile instead of runtime
to get the karaf-maven-plugin working, but that would be just a workaround. We
could also configure that dependency in the feature file themselves, but IMHO
then I does not need the feature-generation is I have to do such thing manually.
For "provided" and "test" the filtering is clear to me.
Why have you decided to filter the runtime scope out?
> features-generate-descriptor ignoring runtime dependencies
> ----------------------------------------------------------
>
> Key: KARAF-3597
> URL: https://issues.apache.org/jira/browse/KARAF-3597
> Project: Karaf
> Issue Type: Bug
> Components: karaf-tooling
> Affects Versions: 3.0.3
> Environment: Apache Maven 3.2.5
> (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T17:29:23+00:00)
> Maven home: /usr/local/Cellar/maven/3.2.5/libexec
> Java version: 1.7.0_67, vendor: Oracle Corporation
> Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home/jre
> Default locale: en_US, platform encoding: UTF-8
> OS name: "mac os x", version: "10.10.2", arch: "x86_64", family: "mac"
> Reporter: Damian ONeill
> Assignee: Jean-Baptiste Onofré
> Labels: features-generate-descriptor
> Attachments: pom.xml
>
>
> When running the following command
> $ mvn -U karaf:features-generate-descriptor
> The generated feature.xml file does not contain any bundle definitions for
> dependencies defined with scope runtime.
> For e.g.
> <dependencies>
> <dependency>
> <groupId>javax.xml.bind</groupId>
> <artifactId>jaxb-api</artifactId>
> </dependency>
> <dependency>
> <groupId>com.sun.xml.bind</groupId>
> <artifactId>jaxb-impl</artifactId>
> <scope>runtime</scope>
> </dependency>
> <dependency>
> <groupId>org.jvnet.jaxb2_commons</groupId>
> <artifactId>jaxb2-basics-runtime</artifactId>
> </dependency>
> </dependencies>
> results in
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <features xmlns="http://karaf.apache.org/xmlns/features/v1.2.1"
> name="resourcesModel">
> <feature name="resourcesModel" version="6.0-SNAPSHOT"
> description="resourcesModel">
> <details>9001 is the proNX brand name for the EMS Core.</details>
> <bundle>wrap:mvn:javax.xml.bind/jaxb-api/2.1</bundle>
> <bundle>wrap:mvn:javax.xml.stream/stax-api/1.0-2</bundle>
> <bundle>wrap:mvn:javax.activation/activation/1.1</bundle>
>
> <bundle>mvn:org.jvnet.jaxb2_commons/jaxb2-basics-runtime/0.6.4</bundle>
> </feature>
> </features>
> Note no bundle definition for jaxb-impl defined with runtime scope above.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)