jar 的 POM 无效,传递依赖将不可用
Posted
技术标签:
【中文标题】jar 的 POM 无效,传递依赖将不可用【英文标题】:The POM for jar is invalid, transitive dependencies will not be available 【发布时间】:2018-02-26 19:34:10 【问题描述】:我想在 Eclipse 中为我的 maven 项目提供外部依赖。因此,我将 jar 文件及其 POM.xml 直接复制到本地 Maven 存储库中。但不知何故,Eclipse 抱怨 jar 的 POM 无效。
本地存储库中 jar 文件的 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>
<parent>
<groupId>com.b.t</groupId>
<artifactId>v-parent</artifactId>
<version>3.9.0</version>
</parent>
<scm>
<developerConnection>scm:svn:url/</developerConnection>
</scm>
<artifactId>v-p</artifactId>
<version>1.1.0</version>
<name>p</name>
<build>
<plugins>
<!-- Plugin required to build java classes from XSD using XJC -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<arguments>-npa</arguments>
<schemaDirectory>$project.basedir/src/main/resources</schemaDirectory>
<packageName>com.b.t.v.fusion.p.generated</packageName>
<schemaFiles>pConfig.xsd</schemaFiles>
<outputDirectory>$basedir/target/generated-sources</outputDirectory>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- Plugin required to add the generated sources to the classpath -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>$basedir/target/generated-sources</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>com.b.t</groupId>
<artifactId>v-fusioninterface</artifactId>
</dependency>
<dependency>
<!-- FFT -->
<groupId>com.github.wendykierp</groupId>
<artifactId>JTransforms</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<!-- Reading and writing of MATLAB files -->
<groupId>net.sourceforge.jmatio</groupId>
<artifactId>jmatio</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>doclint-java8-disable</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
我已经检查了类似的帖子,并在 eclipse.ini 中进行了必要的更改(将 JDK 的 JRE 指定为 vmargs n all)。我在 MAven 项目中的依赖如下所示:
<dependency>
<groupId>com.b.t</groupId>
<artifactId>v-p</artifactId>
<version>1.1.0</version>
</dependency>
请注意,具有相应 POM.xml 的相同 jar 文件对我在 Intellij 的同事运行良好。
我使用 Eclipse Luna 只是为了获取信息。我还在我的 Eclipse 中检查了已安装的 JRE 是 jdk1.8.0_144。
当我在命令提示符下使用 mvn clean install 时,我也遇到了同样的错误。
有人可以建议我可以检查更多吗?
【问题讨论】:
你能在浏览器或任何其他 XML 解析程序中打开 pom.xml 文件吗? 是的,我可以用notepad++打开它.. notepad++ 是否进行 XML 验证?这与能够查看文件不同。如果您不知道这是什么,请了解一下。 对不起..我只是试图用 Internet Explorer 打开它,但似乎无法用它打开它,看来..你在 xml 编辑器中打开它有什么疑问?你认为这不是正确的 xml 文件吗? 如果 Internet Explorer 无法打开它,因为它是一个损坏的 xml 文件,它说明了您的问题。您必须修复 XML 以使其有效。 【参考方案1】:您不能只是将文件复制到本地存储库中,您需要安装它们。这里有说明:https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
在你的情况下是这样的:
mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>
【讨论】:
感谢您指出。很高兴知道。我这样做了,但不幸的是得到了同样的错误。 :-( 它说“com.b.t:v-p:jar:1.1.0 的 POM 无效,传递依赖项将不可用,请启用调试日志以获取更多详细信息” 你的 pom 引用了父 pomcom.b.t.:v-parent:3.9.0
。这也在您的本地仓库中吗?您是否使用 --debug 运行构建?你能在上面的问题中发布更多关于错误的信息吗?以上是关于jar 的 POM 无效,传递依赖将不可用的主要内容,如果未能解决你的问题,请参考以下文章
org.springframework.security:org.springframework.security.web:jar:3.0.5.RELEASE 的 POM 丢失,没有可用的依赖信息
如何获取 pom.xml 中提到的所有指定 jar 和传递依赖的 jar?
Google 存储客户端库 (appengine-gcs-client) 具有不可用的依赖项 (google-http-client-parent:pom:1.24.1)