Eclipse无法识别Maven依赖关系。

3

我正在尝试将Maven依赖从当前版本更改为另一个版本。这个新版本的依赖除了一些变化外,几乎完全提供与当前依赖相同的功能,因为当前依赖是另一个版本的老版本的分支。为此,我已经:

  1. 将pom中所有对旧依赖的引用更改为新依赖
  2. 在Eclipse中删除并重新导入项目
  3. 运行maven clean install

但是,我仍然遇到了与开始时相同的问题:

  1. Eclipse看不到依赖的任何类。它甚至没有提供导入它们的选项。
  2. 在项目上尝试mvn clean package后,Maven使用以下错误消息失败构建:

    [ERROR] Failed to execute goal on project eet-demo-maven: Could not resolve dependencies for project cz.tomasdvorak:eet-demo-maven:jar:1.0-SNAPSHOT: Failed to collect dependencies at com.github.todvorak:eet-client:jar:1.3.2: Failed to read artifact descriptor for com.github.todvorak:eet-client:jar:1.3.2: Could not transfer artifact com.github.todvorak:eet-client:pom:1.3.2 from/to jitpack.io (https://jitpack.io): Not authorized , ReasonPhrase:Repo not found or no access token provided. -> [Help 1]

我已经检查了pom文件中的错别字和版本号,所以它们不应该是问题。我怀疑这与依赖项/依赖项管理/jitpack及其工作方式有关。我从未真正接触过它们;里面的所有内容都是从我对项目的起始代码复制或对Maven进行的随后微调的结果,我在其中几乎是初学者。我看了一下这个问题,并尝试了那里的解决方案,但在我的情况下没有一个有效。

如何使Maven重新看到依赖项及其传递依赖项,并正确编译项目?

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>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>com.akathist.maven.plugins.launch4j</groupId>
                <artifactId>launch4j-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>l4j-clui</id>
                        <phase>package</phase>
                        <goals>
                            <goal>launch4j</goal>
                        </goals>
                        <configuration>
                            <dontWrapJar>true</dontWrapJar>
                            <headerType>console</headerType>
                            <jar>eet-demo-maven-1.0-SNAPSHOT.jar</jar>
                            <outfile>target\EETSender.exe</outfile>
                            <errTitle></errTitle>
                            <cmdLine></cmdLine>
                            <chdir>.</chdir>
                            <priority>normal</priority>
                            <downloadUrl>http://java.com/download</downloadUrl>
                            <supportUrl></supportUrl>
                            <stayAlive>true</stayAlive>
                            <restartOnCrash>true</restartOnCrash>
                            <manifest></manifest>
                            <icon></icon>
                            <singleInstance>
                                <mutexName>EETMutex</mutexName>
                                <windowTitle></windowTitle>
                            </singleInstance>
                            <classpath>
                                <mainClass>cz.tomasdvorak.eetdemo.Main</mainClass>
                            </classpath>
                            <jre>
                                <path></path>
                                <bundledJre64Bit>false</bundledJre64Bit>
                                <bundledJreAsFallback>false</bundledJreAsFallback>
                                <minVersion>1.6.0_1</minVersion>
                                <maxVersion></maxVersion>
                                <jdkPreference>preferJre</jdkPreference>
                                <runtimeBits>64/32</runtimeBits>
                            </jre>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <mainClass>cz.tomasdvorak.eetdemo.Main</mainClass>
            </manifest>
        </archive>
        <descriptors>
            <descriptor>assembly.xml</descriptor>
         </descriptors>
    </configuration>
</plugin>

</plugins>
    </build>

     <groupId>cz.tomasdvorak</groupId>
    <artifactId>eet-demo-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <repositories>
        <repository>
            <id>jitpack.io</id>
            <url>https://jitpack.io</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.github.todvorak</groupId>
            <artifactId>eet-client</artifactId>
            </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.github.todvorak</groupId>
                <artifactId>eet-client</artifactId>
                <version>1.3.2</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

编辑: 有关此依赖项的 GitHub 链接

编辑 2:我已将 pom 更改如下,并且显然平息了 Maven 的心灵,使项目能够再次构建。Eclipse 让我导入了之前看不到的所有东西。但是,对于这种突然改变心意的解释仍然是他问题的有价值结论。

<project>
.
.
.
    <dependencies>
    <dependency>
        <groupId>com.github.todvora</groupId>
        <artifactId>eet-client</artifactId>
        <version>1.3.2</version>
    </dependency>
    </dependencies>
<!-- 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.github.todvorak</groupId>
                <artifactId>eet-client</artifactId>
                <version>1.3.2</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
     -->
</project>

1
似乎无法下载依赖项。可能是因为权限问题,也可能是因为尚未部署。您能否手动下载依赖项 com.github.todvorak:eet-client:jar:1.3.2 - Jeroen van Dijk-Jun
看起来是这样。我不知道你具体指的是什么,但你可以通过 GitHub 上的“克隆或下载”按钮获取它,并且它在 JitPack 按钮下面。 - Sargon1
那么它很可能已经部署了,尝试使用您的Maven设置手动下载文件等。请参见https://dev59.com/XXI-5IYBdhLWcg3wW3Cp以了解如何调用它。如果已下载,则问题出在其他地方,但我有点怀疑... - Jeroen van Dijk-Jun
1个回答

2
依赖项应该为:
<dependencies>
    <dependency>
        <groupId>com.github.todvora</groupId>
        <artifactId>eet-client</artifactId>

    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.github.todvora</groupId>
            <artifactId>eet-client</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
</dependencyManagement>

你需要在 "tordova" 后面添加一个额外的 "k"


真的。出于某种原因,当我卸载了<dependencyManagement>并在适当的<dependency>中添加了一个版本时,它又开始工作了。我想我太习惯自动完成和拼写检查了。当我从JitPack复制自动生成的pom行以添加依赖项时,我无意中纠正了错误。 - Sargon1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接