簡體   English   中英

如何將本地項目(不是 jar)作為依賴項添加到 Maven 項目

[英]How to add local project (not jar) as a dependency to a Maven project

我有兩個 Maven 項目,我已將它們作為兩個模塊添加到一個 Intellij Idea 的項目中。 項目 B 依賴於項目 A。

這是他們的 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.group</groupId>
    <artifactId>a</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
    </dependencies>
</project>

項目B:

<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.group</groupId>
    <artifactId>b</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.group</groupId>
            <artifactId>a</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

項目 A 很容易編譯,因為它沒有依賴項。 但是項目 B 取決於項目 A,並且由於我沒有告訴 maven 如何找到它,因此無法使用mvn package對其進行編譯。 但如果我沒記錯的話,這可以使用 Intellij Idea 的“Meven Projects”菜單,因為對於 Intellij Idea,這兩個項目都是已知的。

但是現在,由於某種未知的原因,即使在 Intellij Idea 中我也無法編譯項目 B。 當我這樣做時,它會提示:

[ERROR] Failed to execute goal on project b: Could not resolve dependencies for project com.group:b:jar:1.0-SNAPSHOT: Could not find artifact com.group:a:jar:1.0-SNAPSHOT -> [Help 1]

我的問題是,如何將一個項目作為其依賴項包含到另一個項目中? 請注意,我不是在 maven 中尋找本地依賴注入,因為我希望將來當我將包上傳到某個存儲庫時它可以工作。

您的項目B依賴於項目A,並且您已將其指定為pom文件中的依賴項。 項目B無法找到項目A的唯一原因可能是因為項目未在本地.m2存儲庫中安裝工件。 因此,您必須首先對項目A執行mvn clean安裝,這將在您的maven存儲庫中創建工件。 然后,您應該可以在項目B中使用工件A.

由於我來這里是在與Z32F7222222226696F30787889194DEE83E5Z一起解決的同一問題,因此在某些評論中提到(其中Intellij焦點似乎並不明顯),我想指向Z322F72222222222222222222222222222222222222222222222222222222222222222222222222222222202696f30788888888888883E1919483EESEE: /stackoverflow.com/a/10696646/1915920

對我們來說,關鍵點是工作區中的依賴項目pom.xml版本匹配(在依賴和依賴pom.xml中) ,因此工作區分辨率有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM