依赖关系maven插件所需的内容未得到解决

时间:2014-01-18 19:54:33

标签: maven plugins dependencies

我创建了一个名为foo的Maven插件,需要一个JAR文件,比如xyz.jar才能编译和运行。在插件项目foo的pom文件中,我在依赖项部分中提供了xyz.jar和提供的范围。我不想在插件中打包xyz.jar文件。

插件foo将在其安装阶段由另一个项目说bar触发。所以我在项目栏的<build><plugins><plugin>...</plugin></plugins></build>部分添加了插件foo。项目栏在其<dependencies>部分中具有xyz.jar的依赖关系。当我运行安装目标时,xyz.jar中存在的类以及插件foo引用的类在运行时抛出ClassNotFoundException

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

每个插件和Maven项目都有分离的类加载器,这就是它无法正常工作的原因。通常,插件不应该依赖于项目的依赖性。因此删除提供的范围将解决它。操作类加载器非常棘手。

  

我不想在插件中打包xyz.jar文件。

嗯,事实并非如此。这只是一个参考。

我无法分辨你的插件是做什么的。我建议看一下Apache Maven或Codehaus Mojo的插件,看看它是如何完成的。

答案 1 :(得分:0)

项目和插件依赖项在Maven中分开。如果您的插件需要一些外部jars,则需要在插件标记中<dependencies>部分提供这些内容(不与您的项目依赖项一起)。例如:

<build>
   <plugins>
      <plugin>
        <groupId>...</groupId>
        <artifactId>yourPluginArtifactId</artifactId>
        <version>...</version>
        <dependencies>
          <dependency>
            <groupId>...</groupId>
            <artifactId>xyz</artifactId>
            <version>...</version>
          </dependency>
        </dependencies>
      </plugin>
   </plugins>
</build>