如何在maven插件

时间:2017-10-25 14:53:38

标签: java maven maven-3 maven-plugin

我在项目和自定义maven插件中有很长的依赖项列表。 我希望避免重复这些依赖项,并从插件的默认类加载器中开箱即用。

我发现了类似的question asked on SO,但它并没有解决我的问题。

我发现@Mojo的属性完全符合我的要求

requiresDependencyResolution = COMPILE

但它有一个问题。它没有用。

  getClass().getResourceAsStream("/file.json")

如果插件的依赖项列表为空,则上面的行返回null,而项目具有依赖项。

我有一个硬代码解决方法:

IOUtil.toString(new URLClassLoader(new URL[] {
    getProject().getDependencyArtifacts().stream()
.findFirst().get().getFile().toURI().toURL() }, 

Thread.currentThread().getContextClassLoader() ).getResourceAsStream("file.json"))

我觉得有一些技巧我不知道。 我的目标:

<plugin>
                <artifactId>maven-plugin-plugin</artifactId>
                <version>3.4</version>
                <configuration>
                    <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
                </configuration>
                <executions>
                    <execution>
                        <id>mojo-descriptor</id>
                        <goals>
                            <goal>descriptor</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>help-goal</id>
                        <goals>
                            <goal>helpmojo</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

我无法解释的一个观察结果:

在第一种情况下,getResourceAsStream仅在路径前缀为&#34; /&#34; 在第二种情况下,getResourceAsStream仅在没有&#34; /&#34;的路径时有效。

0 个答案:

没有答案