Netty 导入示例时Eclipse项目中的ArtifactTransferException

Netty 导入示例时Eclipse项目中的ArtifactTransferException,netty,Netty,我正在尝试运行一些棘手的示例项目。导入Maven项目后,Eclipse报告以下问题: ArtifactTransferException: Could not transfer artifact io.netty:netty-tcnative:jar:${os.detected.classifier}:1.1.33.Fork2 from/to central (http://repo1.maven.org/maven2): Illegal character in path at index 9

我正在尝试运行一些棘手的示例项目。导入Maven项目后,Eclipse报告以下问题:

ArtifactTransferException: Could not transfer artifact io.netty:netty-tcnative:jar:${os.detected.classifier}:1.1.33.Fork2 from/to central (http://repo1.maven.org/maven2): Illegal character in path at index 96: http://repo1.maven.org/maven2/io/netty/netty-tcnative/1.1.33.Fork2/netty-tcnative-1.1.33.Fork2-${os.detected.classifier}.jar
我在研究相关问题后尝试过的事情:

  • 删除最近更新的文件(似乎是artifactTransferException的常见原因)
  • 手动将os maven插件添加到eclipse插件文件夹
  • 清理项目
  • 删除eclipse项目并重新导入

下一步我应该尝试什么(或者我是否正在沿着正确的道路运行Netty示例)?

我认为os maven插件和eclipse安装存在问题。解决方案是手动将os maven插件添加到eclipse插件文件夹中。在你的问题中,你写道你已经做到了。然而,在您的情况下,我认为eclipse仍然无法运行os maven插件。因此,我建议再次尝试将os maven插件移动到eclipse插件文件夹中

在eclipse的问题报告中,您可以找到属性
${os.detected.classifier}
。Eclipse无法传输工件,因为未计算此属性。如果运行mvn包,则会计算属性。因此,使用mvn包,传输和构建是成功的


属性
${os.detected.classifier}
属于允许使用平台相关项目属性的。Eclipse不计算这些表达式。根据需要,您必须将插件作为jar下载,并将其放入
/plugins
目录中。在我的eclipse插件目录中的jar中,我能够在eclipse中成功地执行pom文件。

在手动将插件添加到plugins文件夹后,将其添加到下的pom中/插件>为我解决了这个问题

        <plugin>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
        </plugin>

马文
os maven插件
您还可以在PackageExplorer->Maven->Add Plugin->specify group ID and artifact ID中右键单击pom.xml文件。

您可以使用

mvn package -DskipTests
然后它会在开始时打印消息

[INFO] ------------------------------------------------------------------------
[INFO] Detecting the operating system and CPU architecture
[INFO] ------------------------------------------------------------------------
[INFO] os.detected.name: linux
[INFO] os.detected.arch: x86_64
[INFO] os.detected.classifier: linux-x86_64
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
然后停止mvn命令,因为您已经获得了正确的属性值,停止该命令,或者您无法在过多的打印中找到消息,然后在父项目的pom.xml文件中添加以下内容:

<properties>
    <os.detected.name>linux</os.detected.name>
    <os.detected.arch>x86_64</os.detected.arch>
    <os.detected.classifier>linux-x86_64</os.detected.classifier>
...

linux
x86_64
linux-x86_64
...

我也遇到了同样的问题。通过添加以下内容解决了此问题:

<extensions>
    <extension>
        <groupId>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <version>1.4.0.Final</version>
    </extension>
</extensions>

马文

顺便提一下,我可以从命令行使用“mvn package”构建包。