多项目中的项目无法找到特定的项目依赖项

时间:2016-02-19 08:00:06

标签: java gradle build build.gradle

我有一个具有以下结构的多项目:

  • pluginApi
  • 插件/ globalOptions
  • 插件/ commandPlugin

其中"插件"只是一个目录。

现在我有几个课程" globalOptions":

  • at.lyze.plugin.globalOptions.extensionpoint.OptionExtension
  • at.lyze.plugin.globalOptions.extensionpoint.OptionHandlerExtension

内部有一个课程" commandPlugin":

  • at.lyze.plugin.commandPlugin.CommandPluginTest

" CommandPluginTest" class使用" OptionExtension"和" OptionHandlerExtension"来自另一个项目:

import at.lyze.plugin.globalOptions.extensionpoint.OptionExtension;
import at.lyze.plugin.globalOptions.extensionpoint.OptionHandlerExtension;

List<OptionHandlerExtension> optionHandlers = wrapper.getPluginManager().getExtensions(OptionHandlerExtension.class);
        for (OptionHandlerExtension optionHandler : optionHandlers) {
            logger.warn(optionHandler.getOption(getClass(), "TestOption"));
        }

我的gradle构建文件如下所示:

&#34; globalOptions&#34;:

dependencies {
    compile project(':pluginApi')
}

&#34; commandPlugin&#34;:

dependencies {
    compile project(':plugins/globalOptions')
    compile project(':pluginApi')
}

当试图运行&#34; jar&#34;每个项目的任务我收到以下错误:

Note: Extension found in at.lyze.plugin.globalOptions.GlobalOptions$TestExtension
:plugins/globalOptions:compileJava
:plugins/globalOptions:processResources UP-TO-DATE
:plugins/globalOptions:classes
:plugins/globalOptions:jar
Note: Extension found in at.lyze.plugin.commandPlugin.CommandPluginTest$BlarghExtension
    C:\Users\wml\Desktop\LocalRepos\darkowlbot\plugins\commandPlugin\src\main\java\at\lyze\plugin\commandPlugin\Co    mmandPluginTest.java:3: error: package at.lyze.plugin.globalOptions.extensionpoint does not exist
import at.lyze.plugin.globalOptions.extensionpoint.OptionExtension;
                                                  ^
C:\Users\wml\Desktop\LocalRepos\darkowlbot\plugins\commandPlugin\src\main\java\at\lyze\plugin\commandPlugin\Co    mmandPluginTest.java:4: error: package at.lyze.plugin.globalOptions.extensionpoint does not exist
import at.lyze.plugin.globalOptions.extensionpoint.OptionHandlerExtension;
                                              ^
C:\Users\wml\Desktop\LocalRepos\darkowlbot\plugins\commandPlugin\src\main\java\at\lyze\plugin\commandPlugin\Co    mmandPluginTest.java:52: error: cannot find symbol
    public static class BlarghExtension implements EventProcessorExtension, OptionExtension {
                                                                            ^
  symbol:   class OptionExtension
  location: class CommandPluginTest
C:\Users\wml\Desktop\LocalRepos\darkowlbot\plugins\commandPlugin\src\main\java\at\lyze\plugin\commandPlugin\CommandPluginTest.java:76: error: cannot find symbol
        public void initializeOptions(OptionHandlerExtension optionHandlerExtension) {
                                  ^
  symbol:   class OptionHandlerExtension
  location: class CommandPluginExtensionClass
4 errors
:plugins/commandPlugin:compileJava FAILED

FAILURE: Build failed with an exception.

我在这里做错了什么或为什么会失败? 如果需要,我可以提供更多信息。

运行gradle 2.9

编辑:

Settings.gradle(包含所有内容的全局项目)

rootProject.name = 'DarkOwlBot'
include 'pluginApi'
include 'core'
include 'plugins/globalOptions'
include 'plugins/commandPlugin'
include 'plugins/guiFeederService'

2 个答案:

答案 0 :(得分:1)

很可能,gradle项目名称中的'/'存在问题。默认情况下,项目名称也用于为项目创建jar。这可能导致错误的文件路径。

我认为解决这个问题的最佳选择是:

  1. 将settings.gradle文件中的include语句更改为
    include ':plugins:globalOptions'和参考globalOptions compile project(':plugins:globalOptions')

  2. 将settings.gradle文件中的include语句更改为
    include ':globalOptions'并通过project(':globalOptions').projectDir = file('plugins/globalOptions')显式配置项目目录 并通过compile project(':globalOptions')

  3. 在您的依赖关系块中引用它

答案 1 :(得分:0)

除了@ReneGroeschke所说的,你应该省略into ('classes')here。您正在改变生成的工件的结构。