簡體   English   中英

OSGI傳遞依賴項級別

[英]OSGI transitive dependencies level

我目前正在嘗試捆綁nonOSGI Maven項目。 現在,我有這樣的事情,

 <?xml version="1.0" encoding="UTF-8"?>
 <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>

<!-- The Basics -->
<artifactId>Project1</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
    <dependency>
        <groupId>internal.commons</groupId>
        <artifactId>internalcommons</artifactId>
        <version>1.5</version>
    </dependency>
    <dependency>
        <groupId>jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>1.0</version>
    </dependency>
</dependencies> 
<parent>
    <groupId>internal</groupId>
    <artifactId>jar-project</artifactId>
    <version>1.0</version>
</parent>
<name>Project 1</name>

<build> 
    <directory>${basedir}/bundles</directory>
    <plugins>
        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.7</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Name>${project.name}</Bundle-Name>
                    <Bundle-Version>1.0</Bundle-Version>
                    <Import-Package>*;resolution:=optional</Import-Package>
                    <Embed-Dependency>*</Embed-Dependency>
                    <Embed-Transitive>true</Embed-Transitive>
                </instructions>
            </configuration>
        </plugin>       
    </plugins>  
</build>

但是,我的nonOSGI捆綁包依賴於各種不同的jar,其中一些jar也具有依賴性。 當我捆綁nonOSGI maven項目時,我只能得到該捆綁包的直接依賴關系,當我使用bundleall時,會出現與xml-apis:xml-apis:jar:2.6.2有關的錯誤。 如果沒有其他選擇,但存在太多依賴關系,我可以創建所有依賴關系的捆綁包。

任何幫助,將不勝感激!

好,

根據發布的stacktrace, 中央倉庫中沒有xml-apis:xml-apis:2.6.2工件。 我想應該是xerces:xmlParserAPIs:2.6.2 這是更新的pom,它沒有嵌入dep的問題:

<?xml version="1.0" encoding="UTF-8"?>
<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>

    <!-- The Basics -->
    <groupId>internal</groupId>
    <artifactId>Project1</artifactId>
    <version>1.0</version>
    <packaging>bundle</packaging>

    <name>Project 1</name>

    <dependencies>
        <dependency>
            <groupId>jdom</groupId>
            <artifactId>jdom</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xmlParserAPIs</artifactId>
            <version>2.6.2</version>
        </dependency>
    </dependencies> 

    <build> 
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>2.3.7</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
                        <Bundle-Name>${project.name}</Bundle-Name>
                        <Bundle-Version>1.0</Bundle-Version>
                        <Import-Package>*;resolution:=optional</Import-Package>
                        <Embed-Dependency>*</Embed-Dependency>
                        <Embed-Transitive>true</Embed-Transitive>
                    </instructions>
                </configuration>
            </plugin>       
        </plugins>  
    </build>

</project>

請注意使用packaging=bundle 要構建,只需執行mvn package

盡管maven-bundle-plugin有助於嵌入依賴項,但我強烈建議您不要這樣做,如果有可能實現更高的項目模塊化。 有帶有預建osgi捆綁軟件的存儲庫 ,例如: apache servicemix捆綁軟件spring企業捆綁軟件存儲庫等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM