Java 我的依赖项定义有什么问题?
我的pom.xmlJava 我的依赖项定义有什么问题?,java,maven,pom.xml,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
<?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>
我使用
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
添加不正确,因为它抱怨包不存在。我应该在哪里添加依赖项,以便我的代码能够成功编译和tun
我指的是这个网站来运行这个例子
项目结构
Cassandra
pom.xml
src
main
java
com
example
cassandra
Client.java
我在Cassandra目录下运行这些命令,pom.xml就是在该目录下显示的这是由于您指定的依赖范围。通过不指定范围,默认值为
compile
发件人:
依赖范围用于限制依赖项的传递性,
以及影响用于各种构建任务的类路径
有6个作用域可用:
- 编译:这是默认范围,如果未指定,则使用。编译依赖项在项目的所有类路径中都可用。 此外,这些依赖关系将传播到依赖项目
- 提供:这很像compile,但表示您希望JDK或容器在运行时提供依赖关系。对于 例如,在为Java企业构建web应用程序时 在版本中,您将设置对Servlet API和相关API的依赖关系 由于web容器提供了 那些课。此范围仅在编译和 测试类路径,并且不是可传递的
- 运行时:此范围表示编译时不需要依赖项,但执行时需要依赖项。它在运行时 和测试类路径,但不是编译类路径
- 测试:此范围表示正常使用应用程序时不需要依赖项,仅适用于测试 编译和执行阶段
- 系统:此范围与提供的类似,只是您必须提供显式包含它的JAR。人工制品是 始终可用,并且不会在存储库中查找
- 导入:(仅在Maven 2.0.9或更高版本中可用)此作用域仅用于 节。它表示指定的POM应替换为 POM部分中的依赖项。自从 它们被替换,具有导入范围的依赖项实际上不存在 参与限制依赖项的传递性
请显示您正在尝试编译的项目的结构。可能是/cassandra/src/main/java/com/example/cassandra/文件夹不存在。@AlexanderFedyukov更新了问题您能尝试安装此依赖项吗@TimBiegeleisen是的,我正在尝试添加这种依赖性。删除Maven依赖性中的
test
,看看编译目标是否有效。我已经读过了。我认为考试是最合适的选择。你能告诉我为什么我的代码不能编译吗?因为“仅适用于测试编译和执行阶段”,我在文档中看到了这一行。Maven使用一个目标,您可以指定一些范围取决于某些构建目标。具有测试范围的依赖项将不包括在编译目标中,并且您正在进行编译,因此该依赖项不可用。
Cassandra
pom.xml
src
main
java
com
example
cassandra
Client.java