我的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 jar
是improperly added
,因为它抱怨包不存在。我在哪里添加该依赖项,以便我的代码能够成功编译和调优?
For more info我引用此网站来运行此示例
项目结构
Cassandra
pom.xml
src
main
java
com
example
cassandra
Client.java
我正在从Cassandra目录运行这些命令,这是pom.xml提供的地方
答案 0 :(得分:0)
这是由于您指定的依赖范围。通过不指定范围,默认值为compile
。
依赖范围用于限制依赖关系的传递性, 还会影响用于各种构建任务的类路径。
有6个范围:
- 编译:这是默认范围,如果未指定,则使用此范围。编译依赖项在项目的所有类路径中都可用。 此外,这些依赖项将传播到依赖项目。
- 提供:这很像编译,但表示您希望JDK或容器在运行时提供依赖关系。对于 例如,为Java Enterprise构建Web应用程序时 版本,您将设置与Servlet API和相关的依赖 提供范围的Java EE API,因为Web容器提供了 那些课程。此范围仅适用于编译和 测试类路径,并且不是传递的。
- 运行时:此范围表示编译不需要依赖项,但是用于执行。它在运行时中 并测试类路径,但不是编译类路径。
- 测试:此范围表示正常使用应用程序不需要依赖关系,并且仅适用于测试 编译和执行阶段。
- system:此范围与提供的类似,只是您必须提供明确包含它的JAR。神器是 始终可用,不会在存储库中查找。
- 导入:(仅在Maven 2.0.9或更高版本中可用)此范围仅用于pom类型的依赖项 部分。它表示应该替换指定的POM POM部分中的依赖项。以来 它们被替换,具有导入范围的依赖实际上并不存在 参与限制依赖的传递性。