【问题标题】:how to get over these maven/m2eclipse issues如何克服这些 maven/m2eclipse 问题
【发布时间】:2012-04-21 22:48:23
【问题描述】:

(首先,我承认,我不喜欢 maven/m2eclipse,但如果我能弄清楚如何克服这些问题,那也不会那么糟糕)

我正在使用 maven/m2eclipse。 m2eclipse 是我所知道的吸收 Maven 罐子的唯一好方法。其中一些可能没有解决方案(但我希望能感到惊讶)。也许解决 #9 就能解决所有问题?

问题

  1. 当我运行“mvn clean package”时,就在 Eclipse 中运行单元测试而言,我已经死在水中了,而 maven 正在构建,因为我喜欢多任务但 maven 阻止了我。如何解决这个问题?

  2. 我将 eclipse 移动到指向 eclipsegen/classes 但单元测试仍在使用 target/classes 中的类,因此它没有使用我刚刚在 eclipse 中编辑的最新代码,并且调试没有对齐,它是踩到没有代码的空白行。

  3. 如果我只是稍微触摸一下 pom.xml,bam,它会在我真的不想要它的时候构建,而自动构建的开启似乎没有帮助。

  4. 在 #3 之上,我得到随机的 pom 构建下载 jar,这只是冻结了 eclipse 做任何事情,为什么要下载 jar(我有点多任务处理,所以这让我很沮丧)

  5. 1234563所以我们可以重现某些版本的问题。 (在 ant 中,我只是修改 xml 来做自定义的东西)。
  6. (我听说这个有一个开放了 5 年的错误)。全局排除,因为我们项目中的人在包含依赖于 log4j 的新事物时会不断破坏东西,并且吸纳该库会破坏我们,因此我们希望全局排除它,以便人们在添加新事物时停止破坏项目(IVY 具有全局排除,为什么不会行家!!!!)

  7. 在 maven 中从 xsd 生成的 xml 代码大约是在 ant 中生成的代码的 2-3 倍。为什么是这样?我认为真的不应该是这样。

  8. 运行我的单元测试显示 xxxx-12.0.8-SNAPSHOT 丢失,但在我的 pom.xml 中它清楚地显示 12.0.9-SNAPSHOT 而不是 .8。 IE。 m2eclipse 进入一些奇怪的状态,我被搞砸了,因为有人选择了 maven

  9. (我不喜欢 IvyDE 的原因与我不喜欢 m2eclipse 的原因相同)。在 maven 中,有没有像 Ivy 一样在构建时说 MOVE ALL jars into target/lib 这样我就可以卸载 m2eclipse(如果 maven 有这个功能,我认为我所有的问题都可能消失)....是常春藤的特色,顺便说一句!!!! 注意:我刚刚意识到卸载 m2eclipse 并运行“mvn eclipse:clean eclipse:eclipse”并不是一个真正的选择,因为在这个项目中我必须导入 30 个项目。我认为对于单个项目,这是一个很好的解决方案。

  10. 有没有办法像 ant 那样记录为调试目的而运行的命令? (in maven how to log the command that was run?)

我真的应该研究 gradle(我听说它是​​ maven 和 ant 中最好的),因为 maven 的理论听起来很棒,但你可以看出它存在很多争议(这通常表明工具不好)。真正有用的好工具通常会有一些争议,但没有 maven 那么多,所以这让我三思而后行,因为我不想搞砸接管我项目的人(我知道 ant 会工作)。我认为很多人甚至不考虑这一点。他们认为“我很好,为什么下一个人不会很好”。

关于如何解决上述问题的任何想法?

【问题讨论】:

    标签: maven m2eclipse


    【解决方案1】:

    关于#9,如果您有 2 个备选方案:

    【讨论】:

      【解决方案2】:

      免责声明:我喜欢 Maven 和 M2Eclipse,我没有遇到过您提到的任何问题。一般来说,M2Eclipse 不会妨碍我的工作。

      可能有帮助的是禁用项目的Maven Builder(右键单击项目,选择“属性”,然后选择“构建器”)。这将消除您抱怨的许多问题。

      另一件可能对您有所帮助的事情(并且接近列表中的第 9 位:卸载 M2Eclipse 并使用 mvn eclipse:eclipse,这将生成 Eclipse .project.classpath 文件,其中包括所有依赖项作为 Eclipse 项目依赖项. 每当您添加或更改依赖项时,您都必须再次运行mvn eclipse:eclipse。试试这个...

      【讨论】:

      • 呃,我们有 30 个项目(我不是特别喜欢这里所做的环境设置)。
      【解决方案3】:

      虽然听起来更快的 PC 可以解决您的一些问题,但我确实同意 m2eclipse 插件很糟糕(尽管自从 eclipse indigo 以来它有点糟糕)。正因为如此,我转而使用 Intellij 一段时间,但一个月后我又转回 eclipse(对我来说,尽管有 m2eclipse,但 eclipse 仍然是最好的)。

      我使用 m2eclipse 能够在 eclipse 中工作,但仅此而已。我所有的 maven 构建(包、安装等)我都使用 maven 本身(命令行)运行,仅仅是因为有太多的场合结果不同(在一个中工作,而不是在另一个中工作,并且 maven 总是正确的)。

      所以,抱歉,没有直接回答您的问题,只是一些提示:

      1) 在 Eclipse 之外进行操作
      2)坚持maven标准(目标/类);这将使您的生活更轻松
      6) 在父 pom 中使用依赖管理可能会有所帮助
      8) 如果您在从命令行运行时遇到同样的问题,那么您的 pom 中存在问题(使用 mvn 依赖项:tree 解决),如果没有,请参阅 1
      9)也许在这里组装是一种选择,但我不推荐你的方法

      【讨论】:

      • 我无法在 Eclipse 之外执行 #1,因为我正在尝试调试无法使用 maven 进行的测试;)。是的,#2 我不得不将我的更改退回到目标/类,而不是让 eclipse 使用与 maven 不同的目录。 (#6 - 父 pom 如何帮助排除父级?你是怎么做到的?)#8...mvn 在 eclipse 之外工作正常...只有在 eclipse 内部它被破坏了:(而且我必须运行 mvn eclipse:clean eclipse:eclipse 来修复它。
      • 我有一台速度非常快的 MacBook Pro,内存为 8 gig,所以不确定速度更快的电脑会不会有什么好处。
      • 在进行 Maven 构建时,您的 Eclipse“挂起”仍然很奇怪。如果在较弱的 PC 上打开了大约 80 个项目并且没有此类问题。 #6 parent pom 不会提供全局排除,但是如果您在dependencyManagement 中定义一个依赖项+ 在其中添加排除项,那么在您的子模块中您不需要重新添加那些排除项,这可以帮助如果相同的依赖项(因此排除)在不同的 pom 文件中使用。
      • 我假设您正在谈论#4...从技术上讲,它在下载 jars 时有一个进度条(我不确定为什么它会一直这样做,因为只包含两个快照 jars)但是我不能做任何令人沮丧的事情。 #1 不是挂起,而是无法运行 JUnit 测试,因为 .class 文件不在目标/类中,当然编译可能需要一些时间才能赶上大量的类。
      猜你喜欢
      • 2011-07-23
      • 1970-01-01
      • 2011-09-11
      • 2014-06-12
      • 1970-01-01
      • 2019-05-11
      • 2021-05-08
      • 1970-01-01
      • 2021-12-18
      相关资源
      最近更新 更多