问题描述
Java 11,Maven 3.8.3
我在 pom 文件中的 Java Maven 项目:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>4.3.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
这里是我的班级:
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Module1
*/
public class App {
private static Logger logger = LoggerFactory.getLogger(App.class);
public static void main(String[] args) {
logger.debug("Module1,JDK: " + System.getProperty("java.version"));
// Use lib commons-lang3
logger.debug("lib: commons-lang3: isEmptyString = " + StringUtils.isEmpty(""));
}
}
但是在 mvn install
之后我得到错误:
[INFO] 正在扫描项目...
[ERROR] [ERROR] 在处理 POM 时遇到一些问题:
[错误] 缺少 org.apache.commons:commons-lang3:jar 的“dependencies.dependency.version”。 @ 第 15 行,第 17 列
如果我打开它存在的 BOM 文件:
<commons-dbcp2.version>2.7.0</commons-dbcp2.version>
<commons-lang3.version>3.9</commons-lang3.version>
<commons-pool.version>1.6</commons-pool.version>
为什么 Maven 在 BOM 文件中找不到正确的 commons-lang3.version
版本号?
解决方法
我解决了这个问题。 在父级的 POM 中使用:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
在模块的 POM 中使用(示例):
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
如您所见,没有明确设置库的版本号。版本号从 BOM 文件中得到隐含。
不错!