将 Maven 与 QT Jambi 一起使用
Posted
技术标签:
【中文标题】将 Maven 与 QT Jambi 一起使用【英文标题】:Using Maven with QT Jambi 【发布时间】:2011-11-30 10:48:31 【问题描述】:我刚刚开始使用 QT Jambi,但在让 Maven 插件正常工作时遇到了一些问题。我收到以下错误消息:
[错误] 无法在项目 DegooClientGUI 上执行目标 net.sf.qtjambi:qtjambi-maven-plugin:4.6.3.1:generate (default-cli):执行目标 net.sf.qtjambi:qtjambi-的默认-cli maven-plugin:4.6.3.1:generate failed: 插件 net.sf.qtjambi:qtjambi-maven-plugin:4.6.3.1 或其依赖项之一无法解析:无法收集 net.sf.qtjambi:qtjambi-的依赖项maven-plugin:jar:4.6.3.1 (): 无法读取 net.sf.qtjambi:qtjambi-maven-plugin-win32:jar:4.6.3.1 的工件描述符:无法传输工件 net.sf.qtjambi:qtjambi- maven-plugin-win32:pom:4.6.3.1 from/to qtjambi (http://qtjambi.sourceforge.net/maven2/):校验和验证失败,存储库中没有可用的校验和 -> [帮助 1]
我的 pom 看起来像这样:
<repositories>
<repository>
<id>qtjambi</id>
<name>qtjambi</name>
<url>http://qtjambi.sourceforge.net/maven2/</url>
<releases>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>qtjambi</id>
<name>qtjambi</name>
<url>http://qtjambi.sourceforge.net/maven2/</url>
<releases>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<checksumPolicy>ignore</checksumPolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>net.sf.qtjambi</groupId>
<artifactId>qtjambi</artifactId>
<version>4.6.3</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>tests</testSourceDirectory>
<plugins>
<plugin>
<groupId>net.sf.qtjambi</groupId>
<artifactId>qtjambi-maven-plugin</artifactId>
<version>4.6.3.1</version>
<executions>
<execution>
<id>qtjambi</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- Specifies where sources are. This parameter is MANDATORY -->
<sourcesDir>src</sourcesDir>
<!-- following parameters aren't mandatory, they use defaults as specified here
if not specified
<translationsDir>src/main/resources/translations</translationsDir>
<destinationDir>target/generated-sources/qtjambi</destinationDir>
-->
<!-- cause -noobsolete switch for lupdate -->
<noObsoleteTranslations>true</noObsoleteTranslations>
</configuration>
</plugin>
</plugins>
</build>
如您所见,我尝试忽略校验和错误,但这无济于事。我还尝试指定存储库中可用的其他版本。那也没有帮助。有任何想法吗?提前致谢!
【问题讨论】:
哪个版本的maven?上面的 sn-p 在 windows 7 上的我的 maven-3.0.3 上成功下载并运行插件。实际上删除checksumPolicy
会导致 WARNING
但继续。
Maven 3.0.3 和 Win 7(64 位)。
并不是说这会解决您的问题,但 SF maven2 存储库将被淘汰并替换为我们已安装的 nexus 存储库。来自 SF 的所有工件都应该在这个 repo“releases-before-2011”中。 “发布”中还没有任何内容,但在接下来的几周内将会有,因为我正处于为所有平台制作 4.7.4beta4 的最后阶段。 repository.qt-jambi.org/nexus/index.html#view-repositories 和 repository.qt-jambi.org/nexus/content/repositories/…
我没有太多使用现有的 Maven 插件来辅助应用程序开发的经验。我在评估它时记得的一点是,它可能需要系统上的二进制 EXE 才能执行特定任务。我在 2012 年的某个时候在我自己的本地树中有许多 QtJambi 插件,我将发布这些东西,但最初的主要目标是可以直接从 nexus 存储库中使用的 maven 兼容版本。
【参考方案1】:
仅供参考,4.6.3.1 没有 win64 版本。
您的错误显然是在谈论 win32 而不是 win64,但值得尝试看看版本 4.6.3 是否可以代替,这个版本有 win32 和 win64)。也许上面测试并确认的人使用的是Win7 32bit或其他东西。但是你已经明确表示你是Win7 64bit。
虽然如果您使用 32 位 JRE 运行 Maven,那么系统会认为它是 32 位系统。也许这就是您正在做的事情,并解释了为什么您的 Win7 64 位正在尝试解析 qtjambi-maven-plugin-win32。
插件的pom.xml在运行时根据平台自动选择qtjambi-maven-plugin-win32或qtjambi-maven-plugin-win64。
解决方案的 2 个选项(选择一个)
1) 使用版本 4.6.3
2) 在您的项目 POM 中添加一个部分以排除 groupId=net.sf.qtjambi artifactId=qtjambi-maven-plugin-win64 这是在 pom.xml 的 build/plugins/plugin/* 部分中完成的。我手头没有示例,但 Eclipse m2e pom.xml 编辑器允许快速轻松地排除。排除手动添加 qtjambi-maven-plugin-win32 的附加依赖项后。据我了解,平台相关部分提供了一个可以运行的 EXE,并且由于所有 Win64 都支持执行 Win32 二进制文件,因此使用 Win32 应该没问题。
仅供参考
http://repository.qt-jambi.org/nexus/content/repositories/releases-before-2011/net/sf/qtjambi/qtjambi-maven-plugin-win64/这个目录应该是4.6.3.1 win64版本。
http://repository.qt-jambi.org/nexus/content/repositories/releases-before-2011/net/sf/qtjambi/qtjambi-maven-plugin-win32/4.6.3.1/ 这是 4.6.3.1 win32 插件实际所在的位置。
[2013 年 2 月编辑 - 将“http://qt-jambi.org/maven2/”替换为“http://repository.qt-jambi.org/nexus/content/repositories/releases-before-2011/”,这是当前 URL]
【讨论】:
以上是关于将 Maven 与 QT Jambi 一起使用的主要内容,如果未能解决你的问题,请参考以下文章