[英]Maven2: can we have dependency for a plugin thats used in the build section
我正在使用由一组父POM和几个子POM组成的项目的开源。 那些子POM代表库,原型和插件。 这个插件依赖于这些子模块中的各个子模块,并且在像我这样的依赖项目的部分中使用。我已经将此Maven项目导入到我的Eclipse工作区中。
在我自己的项目的POM中(同样在Eclipse中),我可以毫无问题地通过依赖关系引用这些模块。 但是,我也想在构建部分中使用该插件,但由于出现以下Maven2错误而无法使用:
Project build error: Unresolveable build extension: Plugin org.grouplens.lenskit:lenskit-eval-maven-plugin:2.1-SNAPSHOT or one of its dependencies could not be resolved: Could not find artifact org.grouplens.lenskit:lenskit-eval-maven-plugin:jar:2.1-SNAPSHOT
这是因为我是通过Eclipse的“解决工作区项目的依赖关系”直接访问POM的,并且当然此快照版本尚未部署到存储库中,因此这是我实际使用它的唯一方法。
我试过了:
添加lenskit-eval-maven-plugin的任何依赖项:它们有几个,但我只是添加了项目的唯一模块(其他包括maven-plugin-api之类的东西):
<dependency> <groupId>org.grouplens.lenskit</groupId> <artifactId>lenskit-test</artifactId> <version>${project.version}</version> <scope>test</scope> </dependency>
在本节中使用模块之前,请对该插件模块放置依赖项
<dependency> <groupId>org.grouplens.lenskit</groupId> <artifactId>lenskit-eval-maven-plugin</artifactId> <version>${lenskit.version}</version> </dependency>
在插件本身中添加一个依赖项,以便:
<build> <plugins> <plugin> <artifactId>lenskit-eval-maven-plugin</artifactId> <groupId>org.grouplens.lenskit</groupId> <!-- TODO --> <version>${lenskit.version}</version> <extensions>true</extensions> <dependencies> <dependency> <groupId>org.grouplens.lenskit</groupId> <artifactId>lenskit-eval-maven-plugin</artifactId> <version>${lenskit.version}</version> </dependency> </dependencies>
并同时使用(0),(1)和(2)
好的,所以我意识到尝试(2)正在推动它。 所以我的问题是:我可以在build区段中使用一个也是依赖项的插件吗? 如果可以,怎么办? 如果解决方案(1)的使用正确,那么Eclipse首先解析为本地工作区的方法是否可能会出现问题?
TIA
maven2的默认存储库中不存在任何工件。 尝试添加显式存储库,否则此插件不适用于maven2(请检查此maven3,我没有任何问题)。
您可能需要在settings.xml
或POM中为插件的快照版本添加<pluginRepository>
,因为在常规存储库中不会搜索插件。
更新
您的本地Maven $HOME/.m2/repository
下自动创建的联机$HOME/.m2/repository
缓存版本。
部署到中央存储-SNAPSHOT
版本通常存储在其他一些地址上,必须明确设置。 如果您在POM / settings.xml
没有此快照,则添加此快照将有助于使用快照版本:
<pluginRepositories>
<pluginRepository>
<id>sonatype-snapshots</id>
<releases><enabled>false</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</pluginRepository>
</pluginRepositories>
在Maven Central中,您不会发现仅发布此类快照的任何快照版本 。 在您的情况下,您需要使用其他版本的插件,如下所示:
<groupId>org.grouplens.lenskit</groupId>
<artifactId>lenskit-eval-maven-plugin</artifactId>
<version>2.0.2</version>
这是2013年9月...
您在问题中提到的东西是这样的:
<build>
<plugins>
<plugin>
<artifactId>lenskit-eval-maven-plugin</artifactId>
<groupId>org.grouplens.lenskit</groupId>
<!-- TODO -->
<version>${lenskit.version}</version>
<extensions>true</extensions>
<dependencies>
<dependency>
<groupId>org.grouplens.lenskit</groupId>
<artifactId>lenskit-eval-maven-plugin</artifactId>
<version>${lenskit.version}</version>
</dependency>
</dependencies
没有意义,因为您定义了一个插件,您想在其中添加相同的插件到插件的类路径中。
唯一可以解决问题的方法是使用正确的版本,如下所示:
<build>
<plugins>
<plugin>
<artifactId>lenskit-eval-maven-plugin</artifactId>
<groupId>org.grouplens.lenskit</groupId>
<!-- TODO -->
<version>2.0.2</version>
<extensions>true</extensions>
<...>
</plugin>
...
</plugins>
</build>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.