2011-09-15 13 views
8

Básicamente, mi servicio web debe poder implementarse como un único paquete jar OSGi. Por lo tanto:Intentando construir un paquete OSGi en Maven con dependencias incrustadas. Parece que no puede excluir las dependencias transitivas de BND classpath

  1. El paquete debe contener todas las dependencias de compilación y maven de tiempo de ejecución.
  2. También debe contener todas las dependencias no opcionales que dependen de esas dependencias (es decir, las dependencias transitivas).

Estoy tratando de usar el paquete maven-plugin para lograr esto. Utilicé Embed-Dependency para obtener todas mis dependencias de compilación y tiempo de ejecución en el paquete, y utilicé Embed-Transitive para incorporar todas las dependencias transitivas. Luego descubrí cómo usar excludeDependencies para excluir las dependencias de Maven de la classpath BND (se mueven a Private-Package en el Manifiesto), pero por mi vida no puedo encontrar la manera de lograr que excluya las dependencias transitivas . Independientemente de lo que haga, las dependencias transitorias aún parecen aparecer en la lista Import-Package del Manifiesto.

Peor aún, parece absorber TODAS las dependencias, incluidas las opcionales, así que obtengo muchas cosas adicionales que no uso como ibatis y jfree. Sin embargo, cuando agrego; opcional = falso al patrón de dependencia, recibo una advertencia de que no hay dependencias que coincidan con el patrón.

Empecé a tratar de excluir las dependencias una por una, pero después de una hora de buscar dependencias, decidí que tenía que haber una manera mejor.

Esta es la encarnación actual de mi pom.xml. ¿Alguien puede ayudarme a resolver esto?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<parent> 
    <artifactId>direct-parent</artifactId> 
    <groupId>com.edo.direct</groupId> 
    <version>1.0-SNAPSHOT</version> 
    <relativePath>../direct-parent</relativePath> 
</parent> 

<artifactId>direct-registration</artifactId> 
<packaging>bundle</packaging> 

<repositories> 
    <repository> 
     <id>wso2</id> 
     <url>http://dist.wso2.org/maven2/</url> 
    </repository> 
</repositories> 

<build> 
    <plugins> 

     <plugin> 
      <groupId>org.apache.felix</groupId> 
      <artifactId>maven-bundle-plugin</artifactId> 
      <version>2.3.5</version> 
      <extensions>true</extensions> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>bundle</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <excludeDependencies>*;scope=compile|runtime</excludeDependencies> 
       <ignoreMissingArtifacts>true</ignoreMissingArtifacts> 
       <instructions> 
        <Bundle-Vendor>edo Interactive</Bundle-Vendor> 
        <Bundle-SymbolicName>com.edo.direct.service</Bundle-SymbolicName> 
        <Export-Package> 
         com.edo.service;-split-package:=merge-first 
        </Export-Package> 
        <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency> 
        <Embed-Transitive>true</Embed-Transitive> 
        <Import-Package> 
         * 
        </Import-Package> 
        <Private-Package> 
         com.edo*;-split-package:=merge-first, 
        </Private-Package> 
        <Include-Resource> 
         {maven-resources} 
        </Include-Resource> 
        <Bundle-ClassPath>.,{maven-dependencies}</Bundle-ClassPath> 
       </instructions> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <includes> 
        <include>**/*Test.java</include> 
       </includes> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <version>1.5</version> 
      <executions> 
       <execution> 
        <id>add-source</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>src/main/groovy</source> 
         </sources> 
        </configuration> 
       </execution> 
       <execution> 
        <id>add-test-source</id> 
        <phase>generate-test-sources</phase> 
        <goals> 
         <goal>add-test-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>src/test/groovy</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.1</version> 
      <configuration> 
       <compilerId>groovy-eclipse-compiler</compilerId> 
       <verbose>true</verbose> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
      <dependencies> 
       <dependency> 
        <groupId>org.codehaus.groovy</groupId> 
        <artifactId>groovy-eclipse-batch</artifactId> 
        <version>1.8.0-03</version> 
       </dependency> 
       <dependency> 
        <groupId>org.codehaus.groovy</groupId> 
        <artifactId>groovy-eclipse-compiler</artifactId> 
        <version>2.5.1</version> 
        <exclusions> 
         <exclusion> 
          <groupId>org.codehaus.groovy</groupId> 
          <artifactId>groovy-eclipse-batch</artifactId> 
         </exclusion> 
        </exclusions> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
    <pluginManagement> 
     <plugins> 
      <!--This plugin's configuration is used to store Eclipse m2e settings 
       only. It has no influence on the Maven build itself. --> 
      <plugin> 
       <groupId>org.eclipse.m2e</groupId> 
       <artifactId>lifecycle-mapping</artifactId> 
       <version>1.0.0</version> 
       <configuration> 
        <lifecycleMappingMetadata> 
         <pluginExecutions> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.codehaus.mojo</groupId> 
            <artifactId>build-helper-maven-plugin</artifactId> 
            <versionRange>[1.5,)</versionRange> 
            <goals> 
             <goal>add-source</goal> 
             <goal>add-test-source</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-compiler-plugin</artifactId> 
            <versionRange>[2.3.1,)</versionRange> 
            <goals> 
             <goal>testCompile</goal> 
             <goal>compile</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
          <pluginExecution> 
           <pluginExecutionFilter> 
            <groupId>org.codehaus.groovy</groupId> 
            <artifactId>groovy-eclipse-compiler</artifactId> 
            <versionRange>[2.5.1,)</versionRange> 
            <goals> 
             <goal>testCompile</goal> 
             <goal>compile</goal> 
            </goals> 
           </pluginExecutionFilter> 
           <action> 
            <execute /> 
           </action> 
          </pluginExecution> 
         </pluginExecutions> 
        </lifecycleMappingMetadata> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

<name>direct-registration</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <gmaven.version>1.3</gmaven.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.9</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.axis2.wso2</groupId> 
     <artifactId>axis2</artifactId> 
     <version>1.6.0.wso2v4</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-kernel</artifactId> 
     <version>1.6-wso2v4</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2</artifactId> 
     <version>1.6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-kernel</artifactId> 
     <version>1.6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-spring</artifactId> 
     <version>1.6.0</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-asm</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-ldap</artifactId> 
     <version>3.0.5.RELEASE</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 

    <dependency> 
     <groupId>org.grails</groupId> 
     <artifactId>grails-spring</artifactId> 
     <version>1.3.7</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.2.0.Final</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.6.5.Final</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-ehcache</artifactId> 
     <version>3.6.5.Final</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.0.Final</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 

    <dependency> 
     <groupId>postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.0-801.jdbc4</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.12.1.GA</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2.2</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.ehcache</groupId> 
     <artifactId>ehcache-core</artifactId> 
     <version>2.4.3</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 

    <dependency> 
     <groupId>com.google.collections</groupId> 
     <artifactId>google-collections</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.6</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>2.0.1</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>commons-codec</groupId> 
     <artifactId>commons-codec</artifactId> 
     <version>1.5</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>1.6.2</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 

    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.5.10</version> 
     <scope>compile</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.5.10</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
     <version>1.5.10</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jul-to-slf4j</artifactId> 
     <version>1.5.10</version> 
     <scope>runtime</scope> 
     <optional>false</optional> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.geronimo.specs</groupId> 
     <artifactId>geronimo-osgi-locator</artifactId> 
     <version>1.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.geronimo.specs</groupId> 
     <artifactId>geronimo-jaxrs_1.1_spec</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Project Dependencies --> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>direct-common</artifactId> 
     <version>${project.version}</version> 
    </dependency> 
</dependencies> 
</project> 

Respuesta

Cuestiones relacionadas