javac编译错误和Maven依赖解析的问题

Issues with javac compilation errors and Maven dependency resolution

说到 Maven,我是 "noob"。我以前用过 ANT,但 Maven 不够用,无法 "stick"。

这是我的问题。我正在尝试编写一个 java 程序,该程序将解析 JSON 文件以获取相关信息,然后使用仅上传 CSV 文件的专有工具生成 CSV 文件以供上传。我使用 Maven 构建了项目。该程序将使用 Google Gson 库,我在 POM 文件(包含在下面)中将其列为依赖项。当我执行 "mvn compile" 时,Maven returns 一个错误指示包 Maven 应该通过其依赖管理功能解析不存在。

具体错误:

"error: package com.google.code.gson does not exist"

这是我的 POM 文件:

<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.acumen.app</groupId>
  <artifactId>CatalogConverter</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>CatalogConverter</name>
  <url>http://maven.apache.org</url>
  <build>
    <plugins>
      <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>
      <configuration>
        <source>1.7</source>
        <target>1.7</target>
      </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.3.1</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</project>

我的 java 应用程序 class 中有一个 import 语句,如果我对 Maven 的理解是正确的,它应该可以根据 Maven 下载我的依赖项来解析。这是导入语句。

import com.google.code.gson.Gson;

所以我的问题是,为什么 Maven 不编译我的代码?我认为我没有错误配置导入和 POM 文件。虽然,这总是有争议的!我可以转到本地 Maven "repo" 并查看实际上已下载 jars。我相当确定错误是 "user error",那么我哪里出错了?

我不认为 "provided" 是正确的依赖关系,因为 jar 文件是成功编译所必需的,必须下载(因为没有容器服务器或其他机制会为我解析它们)。该应用程序将作为一个 jar 本身执行。

在你的 gson 版本中它必须是

import com.google.gson.Gson;