繁体   English   中英

Maven2:我们是否可以依赖构建部分中使用的插件

[英]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的,并且当然此快照版本尚未部署到存储库中,因此这是我实际使用它的唯一方法。

我试过了:

  1. 添加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> 
  2. 在本节中使用模块之前,请对该插件模块放置依赖项

     <dependency> <groupId>org.grouplens.lenskit</groupId> <artifactId>lenskit-eval-maven-plugin</artifactId> <version>${lenskit.version}</version> </dependency> 
  3. 在插件本身中添加一个依赖项,以便:

      <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> 
  4. 并同时使用(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM