[英]How to inherit dependencies from other libraries in maven?
我用maven創建了一個自定義的my-commons
庫。 公共pom包含例如以下依賴項:
<?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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>de.mydomain</groupId>
<artifactId>my-commons</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<!-- workaround for http://jira.codehaus.org/browse/MASSEMBLY-603-->
<maven.build.timestamp>${maven.build.timestamp}</maven.build.timestamp>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
我將自定義庫安裝到我的本地存儲庫中。 在另一個項目中,我重用了庫。 它正確解析,因此它存在於repo中:
<project ...>
<groupId>de.mydomain</groupId>
<artifactId>my-core</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>my.domain</groupId>
<artifactId>my-commons</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
現在在這個項目中,我想使用類org.springframework.web.bind.annotation.ResponseBody
。
問題:該類不在類路徑中。 所以maven抱怨[ERROR] cannot find symbol
。 但為什么?? 我希望依賴繼承!
旁注:如果重要的話,我正在使用Intellij IDEA。 同樣的問題適用於所有“繼承的”庫。 spring-web lib就是一個例子。
請檢查.m2文件夾是否包含您要使用的jar。 您可以在commons項目中使用mvn install
命令來生成jar。 您還需要在正在運行的項目pom中添加commons項目。
您需要通過其pom.xml為commons項目創建工件。
就像我在下面的例子中一樣,我創建了一個單獨的項目,我正在使用AWS和其他一些依賴項,然后是最終jar,我在其他項目中使用: -
我的AWS客戶端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>com.kaamkaj</groupId>
<artifactId>aws-clients</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>aws-clients</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<aws.sdk.version>1.11.104</aws.sdk.version>
</properties>
<dependencies>
<!--AWS dependency-->
<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-dynamodb -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>${aws.sdk.version}</version>
</dependency>
<dependency>
<groupId>com.mercadopago</groupId>
<artifactId>sdk</artifactId>
<version>0.3.4</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>mercadopago</id>
<url>https://github.com/mercadopago/sdk-java/raw/master/releases</url>
</repository>
</repositories>
</project>
另外,在你的情況下,在commons
pom上運行mvn clean install
。
然后在我需要包含aws-client的所有其他項目中,我使用上面項目的artifact-id,如下所示: -
<dependency>
<groupId>com.kaamkaj</groupId>
<artifactId>aws-clients</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
如果您有任何疑問,請與我們聯系:
找到它:刪除<maven.build.timestamp>...
<property>
解決了問題。 我不知道為什么它阻止繼承正常工作,特別是因為我沒有得到任何錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.