【发布时间】:2015-01-04 14:44:30
【问题描述】:
我是 Maven 的新手。
我正在尝试执行以下操作:
假设我们必须项目 A 和 B。项目 B 需要使用从 A 导入的 jar 中的一些 classfrom_A
以下是定义:
项目 A 的 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>A_Group</groupId>
<artifactId>A_Artifact</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>A_Project</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
这是项目 B 的 POM.xml(取决于 A):
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>B_Group</groupId>
<artifactId>B_Artifact</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>B_Project</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>A_Group</groupId>
<artifactId>A_Artifact</artifactId>
<version>1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
这是项目 B 的代码 sn-p:
import packageFromA.*;
public class App {
public static void main(String[] args) {
classFromA ca = new ClassFromA; //from packageFromA
ca.someFunction();
}
}
我为 A 运行 mvn install ,然后为 B 运行没有错误 但是当尝试从 IntelliJ Idea 运行上述代码时,出现错误: 错误:(3, 18) java: 包 packageFromA 不存在
据我从 Maven 文档中了解到:“编译依赖项在所有类路径中都可用,并且它们已打包”。但似乎导入类仍然没有解决。定义中缺少什么?在此先感谢
更新:从 IntelliJ 运行时,重新导入后问题已解决。但是当我从命令行运行时java projectB
我需要明确设置导入 jar 的类路径吗?如果是,我是否需要指向我在本地 maven 存储库 (.m2/repository) 的位置?谢谢
【问题讨论】:
-
pom.xmls 似乎不错,这更有可能是 IDE 问题。你检查生成的jars 了吗? -
感谢您的回复。为项目 A 生成的 jar 包含 classFromA.class 文件。是否应该安装 A 更新类路径的 mvn ?
-
但是项目 B 是否包含项目 A
jar文件?如果是这样,那么这是一个 IDE 问题。 -
不,B 的 jar 不包含 A 的 jar。所以据我了解,这是导入问题,是否正确?应该在这里检查哪些设置?更多信息 - 两个项目都安装在同一个本地存储库中。谢谢
-
在
install之后使用mvn package。