我是Maven的新手。
我嘗試做以下:
假設我們有項目A和B.項目B需要從一個 這裏進口的罐子使用一些classfrom_A的定義: pom.xml的項目中的:Maven:使用來自進口罐子的課程
<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>
下面是從項目乙代碼片斷:
import packageFromA.*;
public class App {
public static void main(String[] args) {
classFromA ca = new ClassFromA; //from packageFromA
ca.someFunction();
}
}
我運行mvn沒有錯誤安裝用於A,然後對於B 但是試圖從IntelliJ IDEA的上述運行代碼時,得到了錯誤: 錯誤:(3,18)的java:包packageFromA不存在
正如我從maven文檔中所理解的:「編譯依賴關係在所有類路徑中都可用,並且它們被打包了」。但似乎導入的類仍然沒有解決。定義中缺少什麼?在此先感謝
更新:從IntelliJ運行時重新導入後解決問題。但是當我從命令行運行
java projectB
我是否需要顯式設置導入的jar類路徑?如果是的話,我需要指向我的本地maven倉庫(.m2/repository)嗎?由於
'pom.xml'似乎很好,這更可能是一個IDE問題。你檢查過生成的'jar'嗎? – meskobalazs 2015-01-04 15:17:44
感謝您的回覆。爲項目A生成的jar包含classFromA.class文件。應該mvn安裝更新類路徑嗎? – 2015-01-04 15:28:41
但是項目B包含項目'jar'文件嗎?如果是這樣,那麼這是一個IDE問題。 – meskobalazs 2015-01-04 15:29:21