[ 
https://issues.apache.org/jira/browse/SLING-3014?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15965936#comment-15965936
 ] 

Konrad Windszus edited comment on SLING-3014 at 4/12/17 2:33 PM:
-----------------------------------------------------------------

With the PDE annotation builder the OSGI-INF folder is being placed in the root 
directory of the project. From there it is being picked up from the Eclipse 
Laucher as well. Unfortunately bnd-maven-plugin writes the OSGI-INF always to 
the folder given by configuration {{classesDir}} 
(https://github.com/bndtools/bnd/blob/master/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndMavenPlugin.java#L270).
 Unfortunately {{classesDir}} is not only the used for expanding the JAR but 
also for generating the classpath for Bnd, therefore you cannot simply 
reconfigure that. Also the {{bnd-maven-plugin}} will only write those 
classes/resources which have not been existing in the target directory already 
(to distinguish between files being created by bnd and those which just have 
been wrapped in the JAR). Therefore coming up with a PR for the 
{{bnd-maven-plugin}} which allows to write the OSGI-INF somewhere else is not 
easy. But I found a simple workaround:

{code}
<plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- make sure it runs after bnd-maven-plugin, i.e. after 
process-classes -->
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/OSGI-INF</outputDirectory>
              <resources>          
                <resource>
                  
<directory>${project.build.outputDirectory}/OSGI-INF</directory>
                  <filtering>false</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
{code}

That will copy the OSGI-INF from {{target/classes}} to the root directory of 
the project from where it is being picked up by both PDE and Tycho. Of course 
the OSGI-INF needs to be listed in {{build.properties}} {{bin.includes}} as 
well.


was (Author: kwin):
With the PDE annotation builder the OSGI-INF folder is being placed in the root 
directory of the project. From there it is being picked up from the Eclipse 
Laucher as well. Unfortunately bnd-maven-plugin writes the OSGI-INF always to 
the folder given by configuration {{classesDir}} 
(https://github.com/bndtools/bnd/blob/master/maven/bnd-maven-plugin/src/main/java/aQute/bnd/maven/plugin/BndMavenPlugin.java#L270).
 Unfortunately {{classesDir}} is not only the used for expanding the JAR but 
also for generating the classpath for Bnd, therefore you cannot simply 
reconfigure that. Also the {{bnd-maven-plugin}} will only write those 
classes/resources which have not been existing in the target directory already 
(to distinguish between files being created by bnd and those which just have 
been wrapped in the JAR). But I found a simple workaround:

{code}
<plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-resources</id>
            <!-- make sure it runs after bnd-maven-plugin, i.e. after 
process-classes -->
            <phase>prepare-package</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/OSGI-INF</outputDirectory>
              <resources>          
                <resource>
                  
<directory>${project.build.outputDirectory}/OSGI-INF</directory>
                  <filtering>false</filtering>
                </resource>
              </resources>              
            </configuration>            
          </execution>
        </executions>
      </plugin>
{code}

That will copy the OSGI-INF to the root directory of the project from where it 
is being picked up by both PDE and Tycho. Of course the OSGI-INF needs to be 
listed in {{build.properties}} {{bin.includes}} as well.

> [build] Generate SCR descriptors using Maven
> --------------------------------------------
>
>                 Key: SLING-3014
>                 URL: https://issues.apache.org/jira/browse/SLING-3014
>             Project: Sling
>          Issue Type: Task
>          Components: IDE
>            Reporter: Robert Munteanu
>            Priority: Minor
>             Fix For: Sling Eclipse IDE 1.2.0
>
>         Attachments: SLING-3014-1.patch
>
>
> _Edit_: updated the issue title to reflect the fact that we're looking to use 
> Maven, not a specific plug-in.
> Since we're starting to use SCR descriptors when building the Sling IDE tools 
> it would be nice to generate them using the maven-scr-plugin. I have the 
> build working in the CLI, but not yet in the IDE ( see 
> http://dev.eclipse.org/mhonarc/lists/tycho-user/msg04764.html ). Once that is 
> done I'll commit my changes to trunk.
> Note that plain Maven projects work just fine, this is about Tycho-driven 
> builds.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to