ServiceMix
  1. ServiceMix
  2. SM-2045

jbi-maven-plugin should not filter out optional dependencies

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 4.0, jbi-maven-plugin-4.5
    • Fix Version/s: jbi-maven-plugin-4.6
    • Component/s: tooling
    • Labels:
      None

      Description

      jbi-maven-plugin should not filter out optional dependencies of the project(pom.xml) that it's executed on. The optional element in maven denotes whether the dependency should be taken transitively for the dependent projects -it is not supposed to have effect on project that defines the dependency as optional.

      So I think "!artifact.isOptional()" should be removed from:
      http://svn.apache.org/viewvc/servicemix/maven-plugins/jbi-maven-plugin/trunk/src/main/java/org/apache/servicemix/maven/plugin/jbi/GenerateServiceAssemblyMojo.java?view=markup
      --------
      if (!artifact.isOptional() && filter.include(artifact) && (artifact.getDependencyTrail().size() == 2)) {
      ---------
      Also, the same might concern the component/su generation mojos...

      The use case and problem I ran into:
      I'm supposed to package an SA to an rpm from a different maven project(via the basic maven way: a dependency). It's really not necessary for those SA dependencies to be propagated transitively to the rpm project. Of course I tried the basic maven way and added the optional flag to the dependencies in the SA project. To my surprise, the SA was empty when I built it. Yes, there are workarounds, but still this a bug in jbi-maven-plugin.

        Activity

        Hide
        Kari J. Niemi added a comment -

        Hi,

        -please refer the documentation maven optional dependencies: http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html
        -I though/was supposed to link that info on my description but seems I forgot it.

        After reading that -would you still think jbi-maven-plugin is doing it right? I still think it's using optional-flag wrongly -it's against the maven specs.

        Show
        Kari J. Niemi added a comment - Hi, -please refer the documentation maven optional dependencies: http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html -I though/was supposed to link that info on my description but seems I forgot it. After reading that -would you still think jbi-maven-plugin is doing it right? I still think it's using optional-flag wrongly -it's against the maven specs.
        Hide
        Guillaume Nodet added a comment -

        I think you misuse the optional maven flag. What you are looking for is more the provided flag which will remove it from the transitive dependency. Imho, optional really means that the artifact can be used without the dependency, which is clearly not the case here.

        Show
        Guillaume Nodet added a comment - I think you misuse the optional maven flag. What you are looking for is more the provided flag which will remove it from the transitive dependency. Imho, optional really means that the artifact can be used without the dependency, which is clearly not the case here.

          People

          • Assignee:
            Unassigned
            Reporter:
            Kari J. Niemi
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Development