【问题标题】:IvyIdea plugin - does not resolve dependenciesIvyIdea 插件 - 不解决依赖关系
【发布时间】:2017-04-19 07:52:00
【问题描述】:

我正在使用 IntelliJ,添加了 IvyIdea 插件,现在尝试使用 IvyIdea 解决项目(Ant 构建)的依赖关系,但收到有关“未解决的依赖项”的错误。我已经下载并配置了 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

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

【问题讨论】:

    标签: java intellij-idea ant ivy


    【解决方案1】:

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

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

    在 IntelliJ 中编译

    • 确保从命令行正常构建工作。

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

    • 现在打开 IntelliJ,直接打开 pentaho-kettle 目录,不导入任何东西。

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

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

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

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

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

      • 选择“使用模块特定设置”(选中它)。然后选择“Use your own”,从“assembly”目录中选择ivysettings.xml文件。

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

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

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

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

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

    • 现在,单击 Project Explorer 中的 UI 模块,然后按 F4。点击“dependencies”选项卡,然后右边绿色的“+”,选择“Module dependency”。

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

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

    运行编译结果

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

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

    • 找到 main 方法并按下它前面空白处的绿色按钮。这将尝试运行 main,并且会可怕地死掉 - 但 IntelliJ 现在已经进行了运行配置;)

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

    • 在“VM Options”下添加以下内容(单击右侧的小框以获得大输入字段):

      -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

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

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

    祝你好运;)

    【讨论】:

    • 这似乎已经过时了,kettle 现在完全依赖于 maven。您是否在 intellij 中配置了最新版本?你可以在这里参考我的问题stackoverflow.com/questions/59282976/…
    • 通过使用上面的想法而不是使用(ivy/ant),因为现在使用了maven,我从项目结构-依赖项向UI模块添加了模块。我看到运行 Spoon.Java 时存在循环依赖关系 我看到错误提示 annotation processing are not allowed on cyclic dependencies. 如果我不添加模块而只运行 Spoon.Java 我看到很多错误提示 ClassDefNotFound com.google.api....
    • 感谢@udbhavgovil 为您提供的 cmets。从发布日期可以看出,这是在 2017 年完成的,当时这个版本的 Kettle 是使用 Ivy 编译的。所以它对于确实使用 Maven 的 current 版本的 Kettle 来说已经过时了,但对于任何需要旧版本的人来说都不是。我也认为这个答案可能对其他使用 Ivy 并遇到问题的人有用。
    • 对,既然你已经设法让它通过 intellij 运行,你能不能看看这个问题,看看你是否可以为当前版本提供帮助。 stackoverflow.com/questions/59282976/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多