0

我正在使用一个项目的开源,它由一组父 POM 和几个子 POM 组成。这些子 POM 代表库、arch-types 和插件。这个插件依赖于这些子模块中的各种子模块,并在我的依赖项目部分中使用。我已经将此 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)正在推动它。所以我的问题是:他们有什么方法可以在构建部分使用插件,这也是一个依赖项?如果有怎么办?如果解决方案 (1) 的使用是正确的,这可能是 Eclipse 首先解析到本地工作空间的方法的问题吗?

TIA

4

3 回答 3

0
于 2013-10-06T17:31:42.927 回答
0

maven2 的默认存储库中没有现有的工件。尝试添加显式 repo 或者这个插件不适合 maven2(检查这个 maven3,我没有任何问题)。

于 2013-10-06T00:03:38.353 回答
0

您可能需要<pluginRepository>在您的settings.xml或 POM 中为插件的快照版本添加一个,因为插件不在正常存储库中被搜索。

更新

您的本地 maven 存储库是自动创建的在线存储库缓存版本,位于$HOME/.m2/repository.

-SNAPSHOT部署到 Central repo 的版本通常存储在其他地址,必须明确设置。如果您的 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>
于 2013-10-06T10:43:44.747 回答