问题1 jdk配置打包报错问题
maven打包报错如下
‘dependencyManagement.dependencies.dependency.systemPath’ for jdk.tools:jdk.tools:jar must specify an absolute path but is ${JAVA_HOME}/lib/tools.jar @ com.....mservice-two:parent:2.0.3-SNAPSHOT, /Users/gallant/Documents/git_repo/.../mservice-two/fortune-service/fortune-parent/D:/Applications/apache-maven-3.5.0/conf/repository/com/.../mservice-two/parent/2.0.3-SNAPSHOT/parent-2.0.3-SNAPSHOT.pom, line 193, column 17
问题原因
systemPath配置必须为决定路径,但是我们配置是绝对路径:${JAVA_HOME}/lib/tools.jar。为什么会报错?
问题出在maven打包时此时是读取的自身内置变量,并非系统变量,所以没能识别${JAVA_HOME}变量
问题解决
- 修改为绝对路径
- 使用maven的内置变量读取Java的home目录,即将${JAVA_HOME}替换为${java.home}
- 通过正确的配置方式读取系统变量即将${JAVA_HOME}替换为${env.JAVA_HOME}
jdk配置在父pom中怎么解?
通过自定义变量方式传给maven
mvn clean package -DskipTests -s "/Users/gallant/Applications/apache-maven-3.6.3/conf/settings-dwd.xml" -DJAVA_HOME=/
配置setting.xml全局变量
只需要将JAVA_HOME追加到已激活的配置中即可
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
<JAVA_HOME>/home</JAVA_HOME>
</properties>
</profile>
问题2 加载依赖慢问题
刷新依赖阻塞在下面的日志
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.2.1:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.2.1:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.2.1:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
解决办法
Maven Runner中的VM参数增加下方的配置
-DarchetypeCatalog=internal