Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-526

Allow a mechanism to give preference to local resources over the ones from embedded jars

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • maven-bundle-plugin-1.4.0
    • maven-bundle-plugin-1.4.1
    • Maven Bundle Plugin
    • None
    • JDK 5 on OpenSolaris/x86

    Description

      Please see the following email discussion between me and Stuart. It happened on users@felix alias on 31 Mar 2008 with the subject that reads like this:
      [maven-bundle-plugin] How to stop exporting a resource from an inlined jar?

      On 31/03/2008, Sahoo <Sahoo@sun.com> wrote:
      > >
      > > Hi,
      > >
      > > I am trying to use maven-bundle-plugin v1.4.0. I prepare a bundle (say
      > > bundle.jar) which inlines the contents of another jar type artifact
      > > called javax.faces:jsf-impl. There is a resource called
      > > META-INF/services/com.sun.faces.spi.injectionprovider which is present
      > > both in the jsf-impl.jar as well in current project's src/main/resources
      > > area. I want to package the one that's in our workspace. So, I
      > > configured the plugin like this:
      > >
      > > <configuration>
      > > <Embed-Dependency>
      > > *;groupId=javax.faces;artifactId=jsf-impl;inline=true
      > > </Embed-Dependency>
      > >
      > > <!-- Package everything from the embedded jar in the
      > > final bundle except the following file which
      > > we maintain in our src/main/resources dir:
      > > META-INF/services/com.sun.faces.spi.injectionprovider
      > > -->
      > > <_exportcontents>
      > > !META-INF/services/com.sun.faces.spi.injectionprovider,*
      > > </_exportcontents>
      > > </configuration>
      > >
      > > Yet, I see the resource that is being packaged in the bundle is the one
      > > from jsf-impl.jar and not from target/classes/... area. What am I doing
      > > wrong?

      currently embedded dependencies are added to the Include-Resource
      statement after the maven resources - unfortunately this means that any
      inlined entries will overwrite local entries, which isn't optimal

      I'll change this ordering round in 1.4.1 (open a JIRA issue to remind me)

      you'll also be able to customize the Include-Resource better in 1.4.1, eg:

      <Include-Resource>

      {maven-dependencies},some-file,{maven-resources},another-file
      </Include-Resource>

      where {maven-dependencies}

      and

      {maven-resources} expand to the list of
      embedded entries and maven resources respectively - you can already do
      this to some extent with 1.4.0, but there's a bug on Windows with replacing
      the "{maven-dependencies}" token...

      so the workaround with 1.4.0 would be to use something like this in place
      of the Embed-Dependency - you'll need to list each dependency explicitly
      using @artifactId-version.jar to inline it (this is what Embed-Dependency
      does under the covers) for example:

      <Include-Resource>
      @jsf-impl-1.2-b19.jar,{maven-resources}

      </Include-Resource>

      will inline the JSF jar and then overlay resources from the current project

      HTH

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            mcculls Stuart McCulloch
            sahoo Sanjeeb Kumar Sahoo
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment