【问题标题】:How do I find the correct Maven archetype project for developing with Scala in Eclipse?如何找到正确的 Maven 原型项目以在 Eclipse 中使用 Scala 进行开发?
【发布时间】:2015-05-20 19:36:21
【问题描述】:

我在尝试在 Eclipse (Luna) 中使用 Scala (v2.11.6) 创建 Maven 项目时遇到问题。说明here 说要安装下面的两个插件。

  • Eclipse 中的 Maven 集成
  • m2eclipse-scala 连接器

这两个插件都可以使用m2eclipse-scala update site 安装。这就是我第一次尝试时所做的。

  • 下载 Eclipse Luna(适用于 JavaEE 开发人员)
  • 使用 m2eclipse-scala 更新站点安装上面的“两个”插件。

当 Eclipse 加载时,我尝试创建一个 Maven 项目,我想使用的原型是 Group Id=net.alchim31.maven, Artifact Id=scala-archetype-simple, Version=1.5。但是,当我在过滤器文本字段中输入“scala-arch”时,这个原型永远不会出现。

我看到的唯一项目是 Group Id=org.scala-tools.archetypes、Artifact Id=scala-archetype-simple、Version=1.2 的项目。当我选择使用这个原型时,我在 Eclipse 中收到一堆错误消息。

  • 加载 ConsoleRunner 时出错,Scala 签名 ConsoleRunner 的预期版本错误:找到 5.0:ConsoleRunner.class 中的 4.1
  • 加载 JUnit4 时出错,Scala 签名 JUnit4 预期的版本错误:5.0 found: 4.1 in JUnit4.class
  • 加载规范时出错,Scala 签名规范的预期版本错误:发现 5.0:Specification.class 中的 4.1

在第二次尝试中,我尝试下载预打包的捆绑包 (Scala IDE for Eclipse)。同样,当我尝试创建 Scala Maven 项目时,我看不到 Group Id=net.alchim31.maven 的 Maven 原型(仅适用于 Group Id=org.scala-tools.archetypes)。

关于我在这里做错了什么有什么想法吗?或者我在哪里可以找到一个普通的 Scala Maven 项目来导入/修改并用于我自己的目的?

【问题讨论】:

    标签: eclipse scala maven m2eclipse maven-archetype


    【解决方案1】:

    这是我如何让它工作的。好像所有原型都不可用,所以基于this answer,我创建了一个远程目录

    之前

    那就这样做吧

    进入[Windows] → [Preferences] → [Maven] → [Archetypes] → Add Remote Catalog并创建目录,然后Apply

    复制粘贴:

    返回创建一个新的 Maven 项目。从下拉列表中选择Remote Catalog。收集所有原型需要一些时间。您可以在 IDE 的右下角看到进度。完成后,您应该能够看到原型

    之后

    使用 groupId 和 artifactId 等创建您的项目。

    右键单击项目,然后从上下文菜单 [Run As] &rarr [Maven Build]。在对话框中,在目标中键入 clean package。运行。项目应该构建并运行测试。

    对我来说,起初我在构建时遇到了错误。这是因为我的默认环境是使用 Java 8。我对 Scala 还很陌生,所以我不确定 Scala 和 Java 8 是否存在问题(我认为它是 pom 中的 Scala 版本(2.10. 0))。但我为让它工作所做的只是将 IDE 中使用的 Java 版本更改为 Java 7。

    基本上只要去[Windows] → [Preferenes] → [Java] → [Installed JREs] → Add → [System VM] → Next → Directory → Find Java 主目录(版本 7)→ Finish → 然后在列表中勾选 Java 7。

    然后重新构建。它应该工作。祝你好运!

    【讨论】:

    • 我收到此消息:加载类文件“JsonBaseMatchers.class”时检测到缺少或无效的依赖项,虽然我可以在 Eclipse 中进行 Maven 构建,但在控制台(Eclipse 外部)上构建失败。此外,无论我如何处理首选项,JRE 系统库的版本仍设置为 JavaSE-1.6。另请注意,我必须取消选中“withVersionClasspathValidator”。基本上,你让我走得很远,但是在 Eclipse (Luna) 上开发 Scala v2.11.6 仍然不容易。就我而言,“它不工作”,直到 IDE 中的所有这些错误都消失。
    • 这很奇怪,但我相信原型在 Eclipse 中将 Scala 版本设置为 2.11.6,但 pom.xml 的 scala 版本和工具版本为 2.10。非常令人沮丧。
    • 是的,我放弃了使用 Eclipse 的 Scala。我使用 Netbeans,但即使这样也不完美。
    • 好的,我尝试了您对 Eclipse Kepler 的建议,但这次我为 Scala v2.10.4(用于 Kepler)安装了旧版本的 Scala-IDE。现在我可以在 Eclipse Kepler 中创建一个 Scala Maven 项目。此外,我必须安装 m2e 连接器(只需单击快速修复选项),然后重新启动 Eclipse。作为一个新手,我无法获得最新的(也许是最好的)有点烦人:Scala v2.11.6、Eclipse Luna、Java v1.8。相反,我将不得不接受 Scala v2.10.4、Eclipse Kepler 和 Java v1.6。
    【解决方案2】:

    我想补充一点,如果您在安装图 1 中显示的原型时遇到以下错误

    无法解析原型 org.glassfish.jersey.archetypes:jersey-quickstart-webapp:2.21 org.eclipse.core.runtime.CoreException:无法解析工件 org.glassfish.jersey.archetypes:jersey-quickstart-webapp:pom:2.21

    图 1:

    那么在使用above 指定的解决方案之前,请尝试在eclipse 中完成these steps

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,偶然发现了这个 SO 问题,以及@peeskillet 给出的答案(非常感谢)。我正在使用:

      • Maven 3.3.3
      • Eclipse Luna Scala IDE 4.0.0.-vfinal-20150305-1644-Typesafe
      • Scala 2.11.6
      • JDK 1.8

      完全按照此处给出的步骤进行操作后,我碰壁了。当我选择正确的原型(net.alchim31.maven)时,我遇到了这个错误: Could not resolve artifact net.alchim31.maven:scala-archetype-simple:pom:1.5 怀疑嵌入在 Eclipse 中的 maven 行为很有趣,我访问了 [Windows] -> [Maven] -> [Installations] 并添加了 maven 的本地安装(在我的 shell 中设置为 M2_HOME 的任何内容)。但是,没有运气!

      激怒了,我访问了这个站点:Scala Doc 并按照此页面的说明切换回命令行。令人惊讶的是(至少对我而言),它奏效了。在当前目录中创建了一个 maven-Scala 项目,我可以将其导入 Eclipse。

      为了不被误解,我并不是说@peeskillet 的回答是错误的。只是想分享另一种在 Eclipse 上创建 maven-scala 项目的方法,以防它对某人有所帮助。我还不明白,为什么 Eclipse-Scala-IDE 还没有给人那种“啊哈”的感觉。

      【讨论】:

        【解决方案4】:

        如上所述成功创建 scala-maven 项目后,您可能会看到错误 "Type not found: type JUnitRunner specs.scala"。在这种情况下,手动将以下 XML sn-p 添加到您的 pom 中。

        <dependency>
            <groupId>org.specs2</groupId>
            <artifactId>specs2-junit_${scala.compat.version}</artifactId>
            <version>2.4.16</version>
            <scope>test</scope>
        </dependency>
        

        另外,为了避免在运行mvn test时出错,

        [ERROR] scalac error: bad option: '-make:transitive'
        

        您还需要从pom.xml 文件中删除以下行:

        <arg>-make:transitive</arg>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-09
          • 1970-01-01
          • 2015-04-30
          • 2014-03-09
          相关资源
          最近更新 更多