运行 maven 站点的奇怪问题(处理 POM 时遇到问题)
Posted
技术标签:
【中文标题】运行 maven 站点的奇怪问题(处理 POM 时遇到问题)【英文标题】:Weird issue running maven site (problems were encountered while processing the POMs) 【发布时间】:2015-07-01 13:10:00 【问题描述】:我正在尝试运行 mvn site,但每次都收到此错误消息。我试过谷歌搜索,但没有找到任何解决方案。我目前在一台从 git bash 运行 maven 的 Windows 机器上。
[警告] 无法从存储库为 org.crashub:crash.shell:pom:1.3.1 创建 Maven 项目。 org.apache.maven.project.InvalidProjectModelException:处理 POM 时遇到了一些问题: [错误] com.sun:tools:jar 的“dependencies.dependency.systemPath”必须指定绝对路径,但为 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/../Classes/classes .jar @ 第 98 行,第 19 列我的 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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>primecheck</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.8</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.4</version>
<dependencies>
<dependency>
<groupId>lt.velykis.maven.skins</groupId>
<artifactId>reflow-velocity-tools</artifactId>
<version>1.1.1</version>
</dependency>
<!-- Reflow skin requires Velocity >= 1.7 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
</pluginRepository>
</pluginRepositories>
</project>
运行mvn dependency:tree
【问题讨论】:
旁注:我建议不要在您的 POM 文件中指定存储库,而是使用 Maven 存储库管理器(例如 Nexus)并相应地配置设置文件:***.com/questions/29821920/… 请提供java -version
、javac -version
、echo $JAVA_HOME
和echo $M2_HOME
的输出(在git bash中)
链接为:books.sonatype.com/nexus-book/reference/…
@Puce java -version
显示java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b18) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
,javac -version
显示javac 1.8.0_25
,echo $JAVA_HOME
显示C:\Program Files\Java\jdk1.8.0_25
和echo $M2_HOME
显示C:\dev\apache-maven-3.3.1
我认为这看起来不错。你执行了什么 Maven 命令?另外请提供mvn dependency:tree
的输出(在问题中不是作为评论),因为我不清楚 crash.shell 和系统依赖项来自何处以及它们是否相关。
【参考方案1】:
我发现了这两个相关的问题:
https://jira.exoplatform.org/browse/CRASH-225
https://jira.codehaus.org/browse/MSHADE-185
所以原因似乎在 Maven Shade 插件中:CRaSH POM 似乎使用了 Shade 插件,然后有错误的硬编码 systemPath。
根据http://www.crashub.org/:
CRaSH 作为 Spring Boot 远程 shell 正式嵌入。
所以 org.crashub:crash.shell:pom:1.3.1 似乎与 Spring Boot 有关,但我不知道警告是什么意思:“无法为 [...] 创建 Maven 项目"
编辑
尝试将以下依赖项添加到您的 POM:
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>$java.home/../lib/tools.jar</systemPath>
<optional>true</optional>
</dependency>
【讨论】:
据我所知,spring-boot-starter-parent 是使用 Shade pom.xml @Tom 是 CRaSH POM,它使用 Shade 插件并且有错误的硬编码 systemPath,我认为:repo1.maven.org/maven2/org/crashub/crash.shell/1.3.1/… @Tomas 查看我编辑的答案。不过,不确定它是否有效。 @Tomas 我不确定是否有解决办法。我建议参与上述问题的讨论。以上是关于运行 maven 站点的奇怪问题(处理 POM 时遇到问题)的主要内容,如果未能解决你的问题,请参考以下文章
任何从没有站点:站点的 Maven 生成 Findbug HTML 报告的简单方法?