java - Maven 和 java 插件框架

标签 java maven plugins module dependencies

我有一个有点难以解释的问题,但我会尽力解释。如果您有任何不明白或需要更多信息,请随时询问。 :)

我有一个使用java插件框架的java项目。这意味着我正在项目的类路径中搜索具有特定结构的项目。 我有两个项目,它们具有所需的结构,并作为依赖项包含在主项目 pom.xml 中:

<dependency>
    <groupId>package</groupId>
    <artifactId>One</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>package</groupId>
    <artifactId>Two</artifactId>
    <version>1.0</version>
</dependency>

我正在通过 ServiceLoader 检索可用的类,如下所示:

loader = ServiceLoader.load(ISomeInterface.class);
loader.iterator();

我的问题是,ServiceLoader.load 调用仅传递我的 pom.xml 中首先提到的项目。

你们中有人有类似的经历或者可以帮助我解决这个问题吗?

提前致谢, 洛里斯

最佳答案

我发现了问题并解决了!!! 问题是我的每个插件都包含一个名为“META-INF/full.qualified.interface”的文件,其中包含内容“full.qualified.interfaceimplementation”。 Maven只打包第一个项目的文件,而不是合并每个项目的文件内容。 所以你需要做的就是配置maven来合并它使用shade插件找到的所有“META-INF/full.qualified.interface”文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

关于java - Maven 和 java 插件框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32907654/

相关文章:

java - mvn编译错误无效的换行符

ruby-on-rails - Rails auto_complete "undefined method ` auto_complete_for'"问题

java - Object.finalize() 方法忽略抛出的异常

java - 在单独的类中使用 ActionListener

java - 为什么 Tomcat 在 mvn clean install 后需要清理多个服务器?

javascript - jquery.printElement 根本没有响应

button - ckeditor动态更改按钮图标

java - 从excel中读取图像并将其存储在sql server中

java - 使用java在selenium webdriver中的2个窗口之间切换

java - 如何告诉 Spring Boot 哪个主类用于可执行 jar?