Vra

Ek het 'n program wat 'n derde party biblioteek gebruik geskrewe. Ek het dan hierdie verpak as 'n uitvoerbare jar behulp van die Maven-vergadering-plugin (vervaardiging van 'n pot met al afhanklikhede insluitend 'n paar van die derde party potte).

Volgende wat ek nodig het om hierdie pot voeg by 'n PDV projek so dit kan van stapel gestuur word vanaf verduistering. Maar om hierdie werk te maak wat ek nodig het om 'n paar van die thirs party afhanklikhede voeg by my NDI projek wat reeds is geleë in die verpak jar. So ek kry gedupliseer afhanklikhede. Enige idees oor hoe om dit te vermy? Of 'n voorstel om dokumentasie wat beskryf hoe hierdie goed gedoen?

Was dit nuttig?

Oplossing

Jy moet 'n pot, dit is 'n OSGi bundel bou, sodat dit die verlangde manifest.mf met 'n plug-in id en 'n weergawe bevat (dit verander nie die feit dat die pot uitvoerbare bly). Wees versigtig om die opsie uitvoer-pakkette voeg tot die kode beskikbaar vir ander plug-ins te maak / bundels sowel.

Na dat jy hierdie pot in die teiken platform wat gebruik word deur die NDI projek kan installeer (soek vir Target platform in die voorkeure), so dit beskikbaar vir ander plugins word deur die ID (jy kan dit by te voeg as 'n afhanklikheid) .

Op hierdie manier, indien minstens een plug-in het jou pot, kry dit gelaai, maar sal nie 'n paar keer te laai.

Ander wenke

Ek dink dit is net plain sleg praktyk om die ander pype in jou pot in te sluit. Maar as jy wil om dit so te hou, hoe oor die skep van twee potte van een bou: 'n volle een met afhanklikhede, en 'n eenvoudige een te gebruik in NDI (net gebruik verskeie teregstellings in die vergadering plugin)

Ek is nou met behulp van die Maven-bondel-plugin:

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>1.4.0</version>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
                  <Bundle-Name>${pom.name}</Bundle-Name>
                  <Bundle-Version>${pom.version}</Bundle-Version>
                  <Bundle-Activator>org.wso2.mbp.sample01.Activator</Bundle-Activator>
                  <Private-Package>org.wso2.mbp.sample01</Private-Package>
              </instructions>
          </configuration>
      </plugin> 

http://felix.apache.org /site/apache-felix-maven-bundle-plugin-bnd.html

'n bondel te bou. Maar hoe doen ek gebruik die bundel plugin so dit die Manifeslêer vir die pot te bou met die Maven-vergadering-plugin, wat ek gebruik soos skep:

    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
      <appendAssemblyId>true</appendAssemblyId>
      <finalName>myApp</finalName>

      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>         
      <archive>
        <manifest>
          <mainClass>com.TestMain</mainClass>                     
          <packageName>com.</packageName>
        </manifest>
      </archive>    
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>assembly</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top