8

私はmaven-bundle-pluginbnd効果的に)を使用しています。

ソースからリソース ファイルを含めるのは簡単です。

たとえば、リソース ファイル ( ) はビルド時にディレクトリ ( )src/main/resources/some.xmlの下に移動され、命令を使用してバンドルに含めることができます。targettarget/classes/some.xml<Include-Resource>

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>3.0.1</version>
    <extensions>true</extensions>
    <configuration>
        <instructions>
            <Include-Resource>
                some.xml=target/classes/some.xml,
            </Include-Resource>
        </instructions>
    </configuration>
</plugin>

依存関係を持たせましょう:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>library</artifactId>
    <version>1.0.0</version>
</dependency>

依存内のリソースファイルを参照する方法はjar?

つまり、どのように

  • 次のように指定します。

    com.example:library:1.0.0:jar/some.xml
    
  • これの代わりに:

    target/classes/some.xml
    

依存関係の1つからのリソースが出力バンドルに表示されるようにしますjarか?

4

2 に答える 2

7

を使用してmaven-dependency-plugin、依存関係の jar を解凍し、jar にリソースを含めることができます。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack-dependencies</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <markersDirectory>${project.build.directory}/dependencies/dependency-maven-plugin-markers</markersDirectory>
                <artifactItems>
                    <artifactItem>
                        <groupId>DEPENDENCY_GROUPID</groupId>
                        <artifactId>DEPENDENCY_ARTIFACTID</artifactId>
                        <type>OPTIONAL_DEPENCENCY_TYPE</type>
                        <outputDirectory>${project.build.directory}/dependencies/DEPENDENCY_ARTIFACTID</outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>
...
<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <configuration>
        ...
        <instructions>
            ...
            <Include-Resource>target/dependencies/DEPENDENCY_ARTIFACTID/some.xml</Bundle-Activator>
        </instructions>
    </configuration>
</plugin>

Include-Resource指示は pom 相対であると想定されています。 Include-Resource を参照しtargetください。おそらく に置き換えることができます${project.build.directory}

于 2016-05-24T14:04:44.987 に答える
4

jarへのファイル参照がある場合は、次のことができます

-includeresource: @path/to/file.jar!/some.xml

プレフィックスを使用し@て、リソースが jar 内にあることを示し、!/jar の URL から構文を使用します。

トリッキーな部分は、私が疑うプロジェクトの依存関係から jar へのパスを取得することです。

于 2016-05-24T18:24:01.470 に答える