0

我刚开始使用java,并创建了一个项目。它的 maven 项目(我还没有使用过 maven)

所以我的项目有两个模块A和B。B依赖于A,A依赖于远程maven repo中的一些。而 B 也依赖于一些远程仓库。它在 Idea IntelliJ 中运行良好,并且可以很好地构建 jars。

但 afaik .iml 文件是 Idea IntelliJ 特定的。并且 pom.xml 是特定于 Maven 的。当我检查文件时,为什么项目的所有 depedecy 都写在 .iml 文件和 .idea 目录中而不是 pom.xml(s)

如果您想查看真实世界的源代码,那么这里只是用于深入学习 java 的 alpha 项目。当我尝试在travis-ci.org上构建项目时,它无法解决项目的依赖关系

4

2 回答 2

3

梅格拉吉,

我在这里分叉了您的 WebTrimmer 存储库:https ://github.com/ajorpheus/WebTrimmer并修复了一些阻止成功构建的问题:

  1. travisci 失败是因为 lib 文件夹中有三个 jars 对 CI 不可用,因为它正在执行 maven 构建。

    修复是删除这三个 jar 并引入相应的 maven 依赖项,就像在这个提交中一样。

  2. 在添加 maven 依赖项时需要排除,如此处所述:无法解析以下工件:javax.jms:jms:jar:1.1

  3. WebTrimmerUI 依赖于其兄弟模块 WebTrimmerEngine 中的类,因此需要相应的依赖关系。

我已将该项目转换为与 IDE 无关的纯 maven 项目。通过上述更改,我可以从命令行构建项目,并期望 travisci 也应该能够做到。

关于为什么依赖项在 .iml 中重复的问题——这不是 CI 作业失败的原因。该文件中的依赖项是 pom.xml 中的依赖项的快照。此快照在用户手动重新导入 maven 项目时更新,或者如果 maven 项目设置为“自动导入”则自动更新。
正如 Peter Lawrey 在上面的评论中提到的,如果您向项目添加一个 jar,maven 不知道它,它只会出现在 .iml 文件中。

一般来说,要搜索和添加 Maven 依赖项,以下内容一直对我有用:https ://stackoverflow.com/a/10178586/325742

希望这可以帮助 !

于 2013-09-15T12:15:41.000 回答
1

您需要自己将依赖项添加到 pom 中。.iml 文件用于存储您当前正在处理的任何项目的项目特定设置。

拥有 pom 文件可以让您的 maven 构建独立于 IDE,而 .iml 文件要求您拥有 IntelliJ。

您可以从正在使用的版本控制和版本控制中排除 .iml 文件。您还可以通过 IntelliJ 打开其 pom.xml 直接打开现有的 maven 项目,IntelliJ 可以自动导入 pom 文件中指定的所有内容并生成新的 .iml 文件。

于 2013-09-14T22:25:39.783 回答