我的依赖关系定义有什么问题?

时间:2015-02-26 10:31:27

标签: java maven pom.xml

我的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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.example.cassandra</groupId>
<artifactId>simple-client</artifactId>
<packaging>jar</packaging>
<version>0.1.0</version>

 <dependencies>
  <dependency>
   <groupId>com.datastax.cassandra</groupId>
   <artifactId>cassandra-driver-core</artifactId>
   <version>2.1.0</version>
   <scope>test</scope>
  </dependency>
 </dependencies>

 <build>
  <plugins>
   <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.3.2</version>
      <configuration>
         <mainClass>com.example.cassandra.Client</mainClass>
      </configuration>
    </plugin>
  </plugins>
 </build>
 </project>

我的java文件

 package com.example.cassandra;

 import com.datastax.driver.core.Cluster;

 public class Client
 {
   // private Cluster cluster;

      public static void main(String a[])
      {
         System.out.println("I am in");
      }
  }

我用

编译了它
  mvn -e compile

它说

  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler- 
     plugin:2.0.2:compile (default-compile) on project simple-client:   
     Compilation failure
  [ERROR] /cassandra/src/main/java/com/example/cassandra/Client.java:[3,31] 
     error: package com.datastax.driver.core does not exist
  [ERROR] -> [Help 1]
     org.apache.maven.lifecycle.LifecycleExecutionException: Failed to  
     execute goal org.apache.maven.plugins:maven-compiler- 
     plugin:2.0.2:compile (default-compile) on project simple-client:   
     Compilation failure
     /cassandra/src/main/java/com/example/cassandra/Client.java:[3,31]  
     error: package com.datastax.driver.core does not exist

我理解dependency jarimproperly added,因为它抱怨包不存在。我在哪里添加该依赖项,以便我的代码能够成功编译和调优?

For more info我引用此网站来运行此示例

项目结构

  Cassandra
     pom.xml
     src
        main
          java
            com
              example
                cassandra
                  Client.java

我正在从Cassandra目录运行这些命令,这是pom.xml提供的地方

1 个答案:

答案 0 :(得分:0)

这是由于您指定的依赖范围。通过不指定范围,默认值为compile

来自Maven Documentation

  

依赖范围用于限制依赖关系的传递性,   还会影响用于各种构建任务的类路径。

     

有6个范围:

     
      
  • 编译:这是默认范围,如果未指定,则使用此范围。编译依赖项在项目的所有类路径中都可用。   此外,这些依赖项将传播到依赖项目。
  •   
  • 提供:这很像编译,但表示您希望JDK或容器在运行时提供依赖关系。对于   例如,为Java Enterprise构建Web应用程序时   版本,您将设置与Servlet API和相关的依赖   提供范围的Java EE API,因为Web容器提供了   那些课程。此范围仅适用于编译和   测试类路径,并且不是传递的。
  •   
  • 运行时:此范围表示编译不需要依赖项,但是用于执行。它在运行时中   并测试类路径,但不是编译类路径。
  •   
  • 测试:此范围表示正常使用应用程序不需要依赖关系,并且仅适用于测试   编译和执行阶段。
  •   
  • system:此范围与提供的类似,只是您必须提供明确包含它的JAR。神器是   始终可用,不会在存储库中查找。
  •   
  • 导入:(仅在Maven 2.0.9或更高版本中可用)此范围仅用于pom类型的依赖项   部分。它表示应该替换指定的POM   POM部分中的依赖项。以来   它们被替换,具有导入范围的依赖实际上并不存在   参与限制依赖的传递性。
  •