IvyIdea 插件 - 不解决依赖关系

Ram*_*man 4 java ant intellij-idea ivy

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

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

我已经为所有模块配置了“Facets”,以映射到正确的 Ivy 设置和构建属性文件。有谁知道我还有什么可以尝试的吗?

在此输入图像描述

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

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
Run Code Online (Sandbox Code Playgroud)

我已确保使用正确的 Ivy 设置和构建属性,但仍然给出相同的错误。

fja*_*ngh 5

我还尝试使用 IntelliJ 与 Pentaho 一起工作。这是一项相当艰巨的工作,因为很多代码是使用 Apache Ivy 和 Ant 设置的,其余的则使用 Maven 完成。

对我有用的是以下..

在 IntelliJ 中编译

  • 确保正常构建可以从命令行进行。

  • 在 IntelliJ 中安装最新的 IvyIdea 插件

  • 现在打开 IntelliJ,只需打开 pentaho-kettle 目录,无需导入任何内容。

  • 从现有源中选择“文件”->“新建”->“模块”,然后选择“程序集”目录。

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

  • 导入后,在项目浏览器中单击“程序集”,然后按 F4 转到模块设置。

  • 单击模块的“Sources”选项卡,检查是否有名为“res”、“packages-res”的目录或任何其他表示资源的非标准目录 - 除了 build-res(忽略这些目录)。单击这些目录,然后单击树上方的“标记为 - 资源”。

  • 单击模块的“IvyIdea”构面,并配置以下内容:

    • 选择“使用模块特定设置”(选中它)。然后选择“使用你自己的”,并从“程序集”目录中选择ivysettings.xml 文件。

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

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

    find . -name 'ivy.xml'
    
    Run Code Online (Sandbox Code Playgroud)
  • 完成后,让 IvyIdea 通过在项目资源管理器中单击 pentaho-kettle(主目录)来解决所有依赖项,然后右键单击 -> IvyIdea -> 解决所有依赖项。确保准备好足够的咖啡和午餐,因为这将花费很长时间。

  • 在插件下找到“pom.xml”文件。在 IntelliJ 右侧打开“Maven Projects”视图(或使用 View -> Tool Windows -> Maven 项目)。

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

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

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

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

运行编译结果

让这个东西运行起来又是一大乐趣。我运行的是 Linux,因此此处的说明适用于此。其他操作系统或 Windows 上的 YMMV。

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

  • 找到 main 方法并按其前面空白处的绿色按钮。这将尝试运行 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
    
    Run Code Online (Sandbox Code Playgroud)
  • 这些参数是从 Spoon.sh(通常启动 Spoon 的脚本)中窃取的。如果仍有问题,您可能需要检查该文件。

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

  • 使用“环境变量:”后面的按钮添加以下环境变量:Linux环境变量设置

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

祝你好运 ;)