我正密切关注Glowstone自述文件中的“建筑”说明https://github.com/GlowstoneMC/Glowstone 但每当我尝试./setup.sh时,它都无法使用此堆栈跟踪进行构建:
无法在项目glowstone上执行目标:无法解析项目net.glowstone的依赖项:glowstone:jar:1.10.2-SNAPSHOT:无法收集[net.glowstone:glowkit:jar:1.10.2-R0的依赖项.1-SNAPSHOT(编译),com.flowpowered:flow-network:jar:1.1.0-SNAPSHOT(compile),jline:jline:jar:2.11(compile),org.projectlombok:lombok:jar:1.14.8(提供),net.sf.trove4j:trove4j:jar:3.0.3(编译),co.aikar:fastutil-lite:jar:1.0(编译),org.jetbrains.kotlin:kotlin-runtime:jar:1.1-SNAPSHOT (编译),org.jetbrains.kotlin:kotlin-reflect:jar:1.1-SNAPSHOT(编译),io.netty:netty-transport-native-epoll:jar:4.1.0.CR7(编译),junit:junit: jar:4.12(test)]:无法读取net.glowstone的工件描述符:glowkit:jar:1.10.2-R0.1-SNAPSHOT:无法传输工件net.glowstone:glowkit:pom:1.10.2-R0。 1-SNAPSHOT from / to glowstone-snapshots(https://repo.glowstone.net/content/repositories/snapshots/):peer not authenticated - > [帮助1]
我试着在maven网站上查看DependencyResolutionException和peer not authenticated错误的一些提示,但它没有帮助。任何人都请帮助我,我已经被困了几个星期而没有任何进展。
答案 0 :(得分:0)
我尝试了相同的说明,并且能够准确地重现您的错误。
问题似乎是maven无法与pom中指定的存储库安全地通信;见this answer。
经过一番摆弄,我得到了build.sh
脚本(刚刚运行mvn package
)才能成功运行。主要思想是将pom中的依赖版本锁定到非SNAPSHOT版本,这样就不需要从那些有问题的存储库中检索它们。
这些步骤可以让您进入有效的构建:
kotlin-runtime
和kotlin-reflect
依赖关系版本1.1-SNAPSHOT
到1.0.4
。flow-network
更改1.1.0-SNAPSHOT
依赖关系版本
到1.0.0
。glowkit-1.10.2-R0.1-20160907.003121-11.jar
和glowkit-1.10.2-R0.1-20160907.003121-11.pom
并将其放在您当地仓库中的正确位置(对我来说,那是~/.m2/repository/net/glowstone/glowkit/1.10.2-R0.1-SNAPSHOT/
)bukkit.version
属性的值从1.10.2-R0.1-SNAPSHOT
更改为1.10.2-R0.1-20160907.003121-11
fastutil-lite-1.0.jar
下载fastutil-lite-1.0.pom
和http://ci.emc.gs/nexus/content/repositories/aikar/co/aikar/fastutil-lite/1.0/
,并将其放入您当地的mvn回购(~/.m2/repository/co/aikar/fastutil-lite/1.0/
)请注意,执行此操作应该已经解决了下载依赖项的所有问题,因此至少应该成功运行mvn dependency:tree
之类的内容。
最后,即使在解决了这些依赖性问题之后,由于使用了netty版本,因此存在编译问题。将netty-transport-native-epoll
的依赖关系版本从4.1.0.CR7
更改为4.1.5.Final
。此外,您必须在netty-all
上添加此显式依赖项,否则flow-network
将引入早期版本:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.5.Final</version>
</dependency>
应该这样做!完成这些步骤后,mvn package
以及setup.sh
脚本为我成功运行。
答案 1 :(得分:0)
此错误是由连接到repo.glowstone.net的SSL堆栈中的不兼容性引起的。
降低依赖关系以避免连接到Glowstone存储库可能会避免此特定问题,但会产生其他问题,并且目前无法使用最新的Glowstone构建,因为它需要快照依赖项(请参阅GitHub GlowstoneMC问题跟踪器上的GH-467)而且通过与Glowstone开发人员的讨论,以及我自己的测试,降级现在会导致不同的错误:java.lang.IllegalAccessError: class lombok.javac.apt.Processor (in unnamed module @0x18c23b6)
)
Maven的错误消息peer not authenticated
没有明确说明,但它是由repo.glowstone.net引起的,需要服务器名称指示(SNI)扩展(Cloudflare Flexible SSL需要),旧版本的Maven不支持。您可以通过在此服务器上执行SSLLabs扫描来验证这一点,该服务器报告“此站点仅在具有SNI支持的浏览器中工作。”,并在Wireshark中捕获SSL握手,其中显示服务器在第一个客户端Hello之后断开连接,而不是{ {1}}:
Wireshark capture demonstrating missing Extension: server_name
Wireshark capture demonstrating server closing connection
修复很简单:升级到支持SNI的Maven版本。在我的情况下,我有Maven 3.0.5,但从maven.apache.org更新到Maven 3.5.0修复了问题,我能够毫不费力地构建Glowstone。
您可以使用server_name
检查您拥有的Maven版本,它应该显示类似的内容(Glowstone的关键版本是Apache Maven 3.5.0+和Java版本:1.8.0_131):
mvn -version