IvyIdea插件 - 无法解析依赖关系

时间:2016-12-05 00:34:58

标签: java intellij-idea ant ivy

我正在使用IntelliJ,添加了IvyIdea插件,现在尝试使用IvyIdea解决项目(Ant构建)的依赖关系,但收到有关“UNRESOLVED DEPENDENCIES”的错误。我已经下载并配置了Ivy和Ant。

我可以使用Ant命令行解析和构建项目,但不能通过IDE解析和构建项目。我可以看到〜.ivy2 \ cache文件夹已经解决了它所抱怨的所有依赖项。

我为所有模块配置了“Facets”,以映射到正确的常春藤设置和构建属性文件。有谁知道我还能尝试其他什么吗?

enter image description here

我现在在日志中发现了一件事,

loadData of pentaho-kettle#kettle-core;7.1-SNAPSHOT of rootConf=default
    using default to resolve pentaho-kettle#kettle-core;7.1-SNAPSHOT
default: Checking cache for: dependency: pentaho-kettle#kettle-core;7.1-SNAPSHOT {default-ext=[default]}
don't use cache for pentaho-kettle#kettle-core;7.1-SNAPSHOT: changing=true
don't use cache for pentaho-kettle#kettle-core;7.1-SNAPSHOT: changing=true
    local (useCacheOnly) : no ivy file found for pentaho-kettle#kettle-core;7.1-SNAPSHOT
main: Checking cache for: dependency: pentaho-kettle#kettle-core;7.1-SNAPSHOT {default-ext=[default]}
don't use cache for pentaho-kettle#kettle-core;7.1-SNAPSHOT: changing=true
don't use cache for pentaho-kettle#kettle-core;7.1-SNAPSHOT: changing=true
    shared (useCacheOnly) : no ivy file found for pentaho-kettle#kettle-core;7.1-SNAPSHOT
don't use cache for pentaho-kettle#kettle-core;7.1-SNAPSHOT: changing=true
    public (useCacheOnly) : no ivy file found for pentaho-kettle#kettle-core;7.1-SNAPSHOT
WARN:   module not found: pentaho-kettle#kettle-core;7.1-SNAPSHOT
WARN: ==== local: tried
WARN: ==== shared: tried
WARN: ==== public: tried

我已确保使用正确的常春藤设置和构建属性,但仍会出现相同的错误。

1 个答案:

答案 0 :(得分:1)

我还尝试使用IntelliJ与Pentaho合作。这是一项非常重要的工作,因为很多代码都是使用Apache Ivy和Ant设置的,其余的都是使用Maven完成的。

对我有用的是以下内容..

在IntelliJ

中编译
  • 确保正常构建可以从命令行运行。

  • 在IntelliJ

  • 中安装最新的IvyIdea插件
  • 现在打开IntelliJ,只需打开pentaho-kettle目录而不导入任何内容。

  • 选择文件 - >新 - >从现有来源的模块,然后选择"组装" 。目录

  • 让它导入源,但取消选择它找到的任何库。它还应该自动找到ivy.xml并添加IvyIdea方面。

  • 导入后点击" assembly"在项目浏览器中,然后按F4转到模块设置。

  • 点击"来源"模块的选项卡,并检查是否有名为" res"," packages-res"或其他任何非标准的意味着资源 - EXCEPT build-res(忽略那些)。单击这些目录,然后单击"标记为 - 资源"在树上方。

  • 点击" IvyIdea"模块的facet,并配置以下内容:

    • 选择"使用模块特定设置" (检查)。然后选择"使用您自己的",然后从"程序集"中选择ivysettings.xml文件。 。目录

    • 点击"属性"选项卡,然后"添加文件",并从程序集目录中选择build.properties文件。

  • 对其他主​​要模块重复此过程,例如核心和引擎以及可以找到ivy.xml文件的所有其他模块。这是很多工作,因为有很多模块。您可以使用以下命令(linux)查找所有模块:

    find . -name 'ivy.xml'
    
  • 完成后,让IvyIdea通过单击项目资源管理器中的pentaho-kettle(主目录)解析所有依赖项,然后右键单击 - > IvyIdea - >解决所有依赖项。确保你准备好大量的咖啡和午餐,因为这需要永远。

  • 在插件下找到" pom.xml"归档那里。在IntelliJ的右侧打开" Maven Projects"查看(或使用视图 - >工具Windows - > Maven项目)。

  • 在该Maven视图中,单击绿色+以添加pom,然后导航到plugins / pom.xml。这使IntelliJ可以导入其余的插件。这需要一段时间。

  • 现在,单击Project Explorer中的UI模块,然后按F4。单击"依赖关系"选项卡,然后绿色" +"在右侧选择"模块依赖"。

  • 在下面的列表中:选择所有内容,然后按确定。这使得ui模块有一个包含插件的类路径,这样勺子就会在启动时找到东西。

此后IntelliJ应该能够构建添加的模块:按ctrl + f9进行检查。

运行已编译的结果

要让这个东西运行,还有另一种乐趣。我正在运行Linux,因此这里的说明适用于此。 YMMV在其他操作系统或Windows上。

  • 在项目资源管理器中,找到" Spoon" UI项目中的类(或按CTRL + N然后按Spoon)。

  • 找到主要方法,然后按前面边缘的绿色按钮。这将尝试运行main,并且会死得很厉害 - 但IntelliJ现在已经进行了运行配置;)

  • 打开运行配置(运行 - >编辑配置)。

  • " VM选项"添加以下内容(单击右侧的小框以获取大输入字段):

    -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
    -Djava.library.path=./../libswt/linux/x86_64/
    -DKETTLE_HOME=
    -DKETTLE_REPOSITORY=
    -DKETTLE_USER=
    -DKETTLE_PASSWORD=
    -DKETTLE_PLUGIN_PACKAGES=
    -DKETTLE_LOG_SIZE_LIMIT=
    -DKETTLE_JNDI_ROOT=
    -DKETTLE_PLUGIN_CLASSES=org.pentaho.di.trans.steps.gpload.GPLoadMeta,org.pentaho.di.core.database.PALODatabaseMeta,org.pentaho.di.trans.steps.palo.cellinput.PaloCellInputMeta,org.pentaho.di.trans.steps.palo.celloutput.PaloCellOutputMeta,org.pentaho.di.trans.steps.palo.diminput.PaloDimInputMeta,org.pentaho.di.trans.steps.palo.dimoutput.PaloDimOutputMeta,org.pentaho.di.trans.steps.hl7input.HL7InputMeta,org.pentaho.di.job.entries.hl7mllpack.HL7MLLPAcknowledge,org.pentaho.di.job.entries.hl7mllpin.HL7MLLPInput,org.pentaho.di.starmodeler.StarModelerSpoonPlugin,org.pentaho.di.core.market.Market,org.pentaho.di.job.entries.palo.JobEntryCubeCreate.PaloCubeCreate,org.pentaho.di.job.entries.palo.JobEntryCubeDelete.PaloCubeDelete,org.pentaho.di.core.database.OpenERPDatabaseMeta,org.pentaho.di.trans.steps.openerp.objectinput.OpenERPObjectInputMeta,org.pentaho.di.trans.steps.openerp.objectoutput.OpenERPObjectOutputMeta,org.pentaho.di.trans.steps.openerp.objectdelete.OpenERPObjectDeleteMeta
    
  • 这些参数是从spoon.sh中窃取的,这个脚本通常会启动Spoon。如果您仍有问题,可能需要检查该文件。

  • 将工作目录设置为pentaho-kettle / assembly / package-res

  • 在"环境变量之后使用按钮添加以下环境变量:Environment variables to set for Linux

这应该可以运行Spoon。您可能会在控制台中收到相当多的消息,并且Spoon可能需要一分多钟才能启动(在我非常快的机器上),所以请耐心等待;)

祝你好运;)