代码之家  ›  专栏  ›  技术社区  ›  Metadata

在Intellij上生成scala maven项目时出现异常

  •  0
  • Metadata  · 技术社区  · 6 年前

    我正试图建立一个基于Intellij思想的scala-maven项目。在创建项目之后,它就表示构建成功。这就是pom.xml的样子:

    <project xmlns=“http://maven.apache.org/pom/4.0.0”xmlns:xsi=“http://www.w3.org/2001/xmlschema-instance”xsi:schemalocation=“http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4\u 0.xsd”>
    <modelversion>4.0.0</modelversion>
    <groupid>com.dbloads.pgms</groupid>
    <artifactid>艺术</artifactid>
    <version>1.0-快照</version>
    <inceptionear>2008年</inceptionear>
    <属性>
    <scala.version>2.7.0</scala.version>
    </properties>
    
    <相关性>
    <相关性>
    <groupid>组织。scala lang</groupid>
    <artifactid>scala库</artifactid>
    <版本>$scala.version</version>
    </dependency>
    <相关性>
    <groupid>JUnit</groupid>
    <artifactid>JUnit</artifactid>
    <版本>4.4</version>
    <scope>测试</scope>
    </dependency>
    <相关性>
    <groupid>组织规范</groupid>
    <artifactid>规格</artifactid>
    <版本>1.2.5</version>
    <scope>测试</scope>
    </dependency>
    </dependencies>
    
    <构建>
    <sourceDirectory>src/main/scala</sourceDirectory>
    <testsourcedirectory>src/test/scala</testsourcedirectory>
    <插件>
    <插件>
    <groupid>net.alchim31.maven</groupid>
    <artifactid>scala maven插件</artifactid>
    <版本>3.4.0</version>
    <执行>
    <执行>
    <目标>
    <goal>编译</goal>
    <goal>测试编译</goal>
    </目标>
    </执行>
    </执行>
    <配置>
    <scaleaversion>$scala.version</scaleaversion>
    <参数>
    <arg>-目标:jvm-1.5</arg>
    </args>
    </configuration>
    </plugin>
    <插件>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>Maven Eclipse插件</artifactid>
    <配置>
    <downloadsources>真的</downloadsources>
    <构建命令>
    <buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand>
    </buildcommands>
    <附加项目性质>
    <projectnature>ch.epfl.lamp.sdt.core.scalanateure</projectnature>
    </additionalprojectnatures>
    <ClassPathContainers>
    <classpathContainer>org.eclipse.jdt.launching.jre_container</classpathContainer>
    <classpathContainer>ch.epfl.lamp.sdt.launching.scala_container</classpathContainer>
    </ClassPathContainers>
    </configuration>
    </plugin>
    </plugins>
    </build>
    <报告>
    <插件>
    <插件>
    <groupid>net.alchim31.maven</groupid>
    <artifactid>scala maven插件</artifactid>
    <版本>3.4.0</version>
    <配置>
    <scaleaversion>$scala.version</scaleaversion>
    </configuration>
    </plugin>
    </plugins>
    </reporting>
    </project>
    

    接下来,我尝试在项目中添加编译器选项,如下所示:

    添加后,当我单击“运行”按钮时,会收到以下错误消息:

    [错误]plugin net.alchima31.maven:scala maven plugin:3.4.0或其依赖项之一无法解析:未能读取net.alchima31的项目描述符。maven:scala maven plugin:jar:3.4.0:无法将项目net.alchima31.maven:scala maven plugin:pom:3.4.0从/到中心(https://repo.maven.apache.org/maven2):pit-zscaler-emea-amsterdam3pr.proxy.corporate.ge.com:未知主机pitt-zscaler-emea-amsterdam3pr.proxy.corporate.ge.com->[help 1]

    我使用的是jdk版本:1.8.0_172,我已经直接从插件中添加了scala插件。因此它是scala的最新版本。 有人能告诉我怎么解决这个问题吗。

     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.dbloads.pgms</groupId>
      <artifactId>Arts</artifactId>
      <version>1.0-SNAPSHOT</version>
      <inceptionYear>2008</inceptionYear>
      <properties>
        <scala.version>2.7.0</scala.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.scala-lang</groupId>
          <artifactId>scala-library</artifactId>
          <version>${scala.version}</version>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.4</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.specs</groupId>
          <artifactId>specs</artifactId>
          <version>1.2.5</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
      <build>
        <sourceDirectory>src/main/scala</sourceDirectory>
        <testSourceDirectory>src/test/scala</testSourceDirectory>
        <plugins>
          <plugin>
              <groupId>net.alchim31.maven</groupId>
              <artifactId>scala-maven-plugin</artifactId>
              <version>3.4.0</version>
            <executions>
              <execution>
                <goals>
                  <goal>compile</goal>
                  <goal>testCompile</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <scalaVersion>${scala.version}</scalaVersion>
              <args>
                <arg>-target:jvm-1.5</arg>
              </args>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <configuration>
              <downloadSources>true</downloadSources>
              <buildcommands>
                <buildcommand>ch.epfl.lamp.sdt.core.scalabuilder</buildcommand>
              </buildcommands>
              <additionalProjectnatures>
                <projectnature>ch.epfl.lamp.sdt.core.scalanature</projectnature>
              </additionalProjectnatures>
              <classpathContainers>
                <classpathContainer>org.eclipse.jdt.launching.JRE_CONTAINER</classpathContainer>
                <classpathContainer>ch.epfl.lamp.sdt.launching.SCALA_CONTAINER</classpathContainer>
              </classpathContainers>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <reporting>
        <plugins>
          <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>3.4.0</version>
            <configuration>
              <scalaVersion>${scala.version}</scalaVersion>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
    </project>
    

    接下来,我尝试在项目中添加编译器选项,如下所示: enter image description here

    添加后,当我单击运行按钮时,会收到以下错误消息:

    [错误]plugin net.alchim11.maven:scala maven plugin:3.4.0或其依赖项之一无法解析:未能读取net.alchim11.maven:scala maven plugin:jar:3.4.0:无法将项目net.alchim11.maven:scala maven plugin:pom:3.4.0从/传输到中心(https://repo.maven.apache.org/maven2):pitt-zscaler-emea-amsterdam3pr.proxy.corporate.ge.com:未知主机pitt-zscaler-emea-amsterdam3pr.proxy.corporate.ge.com->[帮助1]

    我用的是jdk version: 1.8.0_172我已经直接从插件中添加了scala插件。因此它是scala的最新版本。 有人能告诉我怎么解决这个问题吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Mike Allen    6 年前

    看起来您需要配置 马文 智能 要使用网络代理设置,因为看起来您可能在公司防火墙后面。

    Maven能够通过其设置配置代理(在 ~/.m2/settings.xml Unix系统 -如系统,或 %HOME%\.m2\settings.xml 窗户 )如下:

    <settings ...>
      .
      .
      <proxies>
    
        <!-- You can have one of these for each possible proxy. -->
        <proxy>
          <active>true</active>
    
          <!-- Pick some ID for your proxy here. -->
          <id>corp-proxy</id>
    
          <!-- Choose your protocol here. E.g. "http", "socks4" or "socks5" -->
          <protocol>http</protocol>
    
          <!-- Specify the proxy server name (or IP address) and port of your proxy here. -->
          <host>proxy.example.com</host>
          <port>8080</port>
    
          <!-- Identify any hosts here that you can access directly. It's unlikely that you'll
          need this unless you have a proxy repository (such as Nexus, Artifactory, etc.) on
          your corporate network. -->
          <nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
    
          <!-- The following fields are only necessary if required by your proxy. If you need to
          enter your own username and password, make sure you do not add this file to version
          control! -->
          <username>proxyuser</username>
          <password>somepassword</password>
        </proxy>
      </proxies>
      .
      .
    </settings>
    

    同时, 智能 配置为通过其设置使用代理。请参阅 this answer 更多详情。(请注意,通过 JAVA_OPTS 环境变量可用于运行任何 爪哇 / 斯卡拉 / 合资企业 需要访问 互联网 通过代理。)

    或者,如果代理设置配置正确或不需要,则可能是暂时的网络连接问题,因此请确保 互联网 连接并重试。(例外情况是 马文 从下载插件 马文 中央存储库。)

    btw,版本 斯卡拉 您已指定-2.7.0-is 古代的 而且几乎肯定不会与 JDK公司 8.要么用老的 JDK公司 或更新版本的 斯卡拉 (当前版本为2.12.6)。

    请注意,如果需要使用当前版本的 阿帕奇火花 ,您当前必须使用 斯卡拉 2.11.x-最新版本为2.11.12。

    更新 以下内容:

    从你的评论来看,似乎对 马文 ,的 scala maven插件 ,请 智能 以及 智能scala 插件,所以我将在这里快速总结它们。如果我涉及你已经熟悉的话题,请原谅我…

    马文 是一个用于构建和发布软件的系统。(事实上,它的作用远远不止这些,这就是为什么 马文 把自己描述为 项目管理 软件。)它允许开发人员在一个地方指定其软件的所有依赖项(软件使用的第三方库),其中 马文 根据需要从下载 Central Maven Repository -大部分 开放源代码 -或根据需要从其他私人存储库。进一步的设置控制如何配置编译器、运行测试、生成报告等。

    马文 主要是为了开发 爪哇 -语言项目。这个 scala maven插件 斯卡拉 语言和编译器 马文 .正是这个插件下载了 斯卡拉 由项目指定的编译器,并使用它编译和生成源代码。

    如果你看着你的 马文 项目的 pom.xml 文件,您将注意到 build 章节:

    <project ...>
      ...
      <build>
        ...
        <plugins>
          <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>3.4.0</version>
            <executions>
              <execution>
                <goals>
                  <goal>compile</goal>
                  <goal>testCompile</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <scalaVersion>${scala.version}</scalaVersion>
              <args>
                <arg>-target:jvm-1.5</arg>
              </args>
            </configuration>
          </plugin>
          ...
      </build>
      ...
    </project>
    

    又一次在 reporting 章节:

    <project ...>
      ...
      <reporting>
        <plugins>
          <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>3.4.0</version>
            <configuration>
              <scalaVersion>${scala.version}</scalaVersion>
            </configuration>
          </plugin>
        </plugins>
      </reporting>
    </project>
    

    在这两种情况下,都有一行 <scalaVersion>${scala.version}</scalaVersion> ,这说明 马文 哪个版本的 斯卡拉 你想用。然后该插件使用此版本的 斯卡拉 编译器,并且 马文 将其下载到计算机上缓存的本地存储库(通常,在 C:\Users\{your account}\.m2 在A上 窗户 机器)。注意两个 马文 以及 scala maven插件 将忽略的任何版本 斯卡拉 您已在计算机上安装。

    那么哪个版本的 斯卡拉 插件是否要为您下载?价值 ${scala.version} 声明版本号存储为名为的属性的值 scala.version .您的 pom.xml文件 文件的顶部附近也有创建此属性的行:

    <project ...>
      ...
      <properties>
        <scala.version>2.7.0</scala.version>
      </properties>
      ...
    </project>
    

    因此,您可以看到您将使用 斯卡拉 编译器。如果你想用最新的 斯卡拉 版本,您应该将此更改为:

    <project ...>
      ...
      <properties>
        <scala.version>2.12.6</scala.version>
      </properties>
      ...
    </project>
    

    好的,现在您将使用 斯卡拉 编译器。现在让我们继续 智能 ……

    Intellij理念 是一个 综合开发环境 ( 集成电路设备 ,主要针对与 爪哇 语言。它提供语法突出显示、智能代码完成和其他功能,以简化编写代码的过程。以便为 斯卡拉 编程语言,你需要安装它 斯卡拉 插件。

    您可以配置 智能 使用任何版本的 斯卡拉 你已经安装在你的机器上了。 智能 然后将知道如何编译、构建和运行您的软件,并且可以在不使用您的 Maven项目对象模型 ( 聚甲醛 )文件的生成定义。

    但是,使用的原因之一 马文 是为了确保开发一个项目的一致的构建环境,这样每个开发人员都可以或可能没有在他们的机器上安装任何东西,而不是一时兴起。因此,如果项目使用 马文 是个好主意 智能 .那样的话, 智能 可以使用 马文 pom.xml文件 文件指定编译器的版本、下载依赖项、配置编译器设置等。

    因此,上面的信息应该有助于您启动和运行项目,使用公司的网络代理并使用最新版本的 斯卡拉 ,使用 马文 智能 .