【问题标题】:pom.xml file error due to dependencies and/or plugins由于依赖项和/或插件导致的 pom.xml 文件错误
【发布时间】:2017-09-03 10:01:27
【问题描述】:

我似乎有依赖项/插件的 pom.xml 文件错误,我通过将项目转换为 Maven 生成了这个 pom.xml 文件,然后只生成了这个 pom 文件。查看下面的错误代码。 Java代码本身根据Eclipse STS(Java Spring)不包含错误,java代码中import所需要的jar文件都已导入。

运行 Java 程序时控制台错误打印:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:190)
    at testingpushnotifications.Application.main(Application.java:10)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 2 more

pom.xml 文件显示 Java spring 项目中的错误。

<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>Spring-Android-Push-Notifications-FCM--master</groupId>
  <artifactId>Spring-Android-Push-Notifications-FCM--master</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
        <plugin>   <--- ERROR HERE
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source/>
          <target/>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

第 1 行还有一个大红色 X。

来自上述代码@line 16 的错误日志:'plugin'

Multiple annotations found at this line:
    - Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.5.1:compile 
     (execution: default-compile, phase: compile)
    - CoreException: Could not calculate build plan: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.5.1 or one of its 
     dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-compiler-plugin:jar:3.5.1: 
     ArtifactResolutionException: Could not transfer artifact org.apache.maven.plugins:maven-compiler-plugin:pom:3.5.1 from/to central 
     (https://repo.maven.apache.org/maven2): NullPointerException
    - Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.5.1:testCompile 
     (execution: default-testCompile, phase: test-compile)

POM.XML 文件第 16 行错误

CoreException: Could not calculate build plan: Plugin org.apache.maven.plugins:maven-compiler-plugin:3.5.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-compiler-plugin:jar:3.5.1: ArtifactResolutionException: Could not transfer artifact org.apache.maven.plugins:maven-compiler-plugin:pom:3.5.1 from/to central (https://repo.maven.apache.org/maven2): NullPointerException    pom.xml /Spring-Android-Push-Notifications-FCM--master  line 16 Maven Project Build Lifecycle Mapping Problem

根据注释添加依赖进行编辑;结果 = 剩余错误仍未解决,没有新错误。

<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>Spring-Android-Push-Notifications-FCM--master</groupId>
  <artifactId>Spring-Android-Push-Notifications-FCM--master</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
        <source>1.8</source>
        <target>1.8</target>
         <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version> 
</dependency>
        </configuration> 
      </plugin>
    </plugins>
    <pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        org.apache.maven.plugins
                                    </groupId>
                                    <artifactId>
                                        maven-compiler-plugin
                                    </artifactId>
                                    <versionRange>
                                        [3.5.1,)
                                    </versionRange>
                                    <goals>
                                        <goal>compile</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
  </build>
</project>

【问题讨论】:

  • 听起来有点像您无法访问您的 Maven 存储库。 mvn -X help:help 有什么有用的告诉你吗?

标签: java xml spring maven pom.xml


【解决方案1】:

你把&lt;dependency&gt;标签放错了位置,它必须在&lt;dependencies&gt;标签里面,它不在&lt;build&gt;标签里面,但它应该是这样的

....
<version>0.0.1-SNAPSHOT</version>

<dependencies>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version> 
    </dependency>
</dependencies>

<build>
.....

【讨论】:

    【解决方案2】:

    您似乎没有用于 commons-logging 的 jar,只需在 pom.xml 文件中添加依赖项即可,无论您使用的是什么版本

    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version> 
    </dependency>
    

    如果您使用的是 Java 8,请尝试添加 java 版本并尝试设置 java 路径。

    <source>1.8</source>
    <target>1.8</target>
    

    【讨论】:

    • 设法添加了这两个代码而没有新的错误,尽管它们没有解决以前的错误。
    • 您在错误的删除处添加了 commons-logging 依赖标记。只需在 之外和 标记内取出该 commons-logging 依赖标记
    • 谢谢,但我已经放弃了这个方法,我继续使用不同的框架。
    【解决方案3】:

    一些可能有帮助的步骤:

    1. 在某些情况下,当我们尝试强制更新时,您会开始看到错误,说,无法从 Y 路径传输 X 依赖项,将不会重新尝试解决方案,bla bla bla 在这种情况下通过 cd 快速修复它到 .m2/repository 文件夹并运行以下命令:

    for /r %i in (*.lastUpdated) do del %i

    1. Rt 点击你的项目 -> Maven -> 更新项目 -> 选择强制更新 -> 点击确定
    2. 在属性标签下,添加:
    >  <maven.compiler.source>1.8</maven.compiler.source> 
    > <maven.compiler.target>1.8</maven.compiler.target>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多