我正在尝试复活 Java 1.5 时代的一些旧代码。 Maven(我不太熟悉)是构建工具,可能是一个较旧的主要版本。 旧代码也使用SWT,我也不太熟悉。
我想更新并使其编译为 1.8 代码。 我已将 MANIFEST.MF 更改为具有
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
,并将 pom.xml 更改为 <source>
和 <target>
为 1.8。
当我运行 Maven 来构建时,它看起来像是一场灾难。 相关行似乎是:
[警告] swt:org.eclipse.jface_3.2.0:jar:R 的 POM 丢失,没有可用的依赖信息
[警告] swt:org.eclipse.swt.win32.win32.x86_3.2.0:jar:R 的 POM 丢失,没有可用的依赖信息
[警告] swt:org.eclipse.swt_3.2.0:jar:R 的 POM 丢失,没有可用的依赖信息
[警告] swt:org.eclipse.core.commands_3.2.0:jar:R 的 POM 丢失,没有可用的依赖信息
[...]
[错误] 无法在项目 MyProject 上执行目标:无法解析项目 MyGroupId:MyArtifactId:jar:0.01 的依赖项:无法解析以下工件:swt:org.eclipse.jface_3.2.0:jar:R、swt:org .eclipse.swt.win32.win32.x86_3.2.0:jar:R, swt:org.eclipse.swt_3.2.0:jar:R、swt:org.eclipse.core.commands_3.2.0:jar:R: 在 https 中找不到 swt:org.eclipse.jface_3.2.0:jar:R: //repo.maven.apache.org/maven2 已缓存在本地存储库中,直到中心更新间隔结束后才会重新尝试解析或者强制更新
以下是相关依赖:
<dependency>
<groupId>swt</groupId>
<artifactId>org.eclipse.jface_3.2.0</artifactId>
<version>R</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>swt</groupId>
<artifactId>
org.eclipse.swt.win32.win32.x86_3.2.0
</artifactId>
<version>R</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>swt</groupId>
<artifactId>org.eclipse.swt_3.2.0</artifactId>
<version>R</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>swt</groupId>
<artifactId>org.eclipse.core.commands_3.2.0</artifactId>
<version>R</version>
<scope>compile</scope>
</dependency>
看起来存储库、groupIds 和artifactIds 多年来已经发生过变化,许多版本不再可用。 我尝试将依赖项更新到较新的版本,但大多数版本都依赖于较新的 Java 版本。
是否存在可在 Java 1.8 下工作的 SWT 活动依赖项列表?
更新和构建一个依赖于 Java 1.5 时代的项目是相当棘手的,至少在使用 1.8 这样相对现代的 Java 版本时是这样。现在,让我向您展示如何解决您面临的 Maven 和 SWT 依赖问题。
POM
警告和错误表明Maven无法在配置的存储库中找到所需的工件(swt:org.eclipse.jface_3.2.0
等)。为什么:
这些工件可能未托管在默认的 Maven 中央存储库中。
您指定的 R
版本有问题,因为 Maven 需要正确的版本号,例如 3.2.0
。
多年来,Eclipse SWT 工件进行了多次重组,组 ID、工件 ID 和版本也发生了变化。
您可以使用与 Java 1.8 兼容的更新版本的 SWT 库。 Eclipse 在 Eclipse Public Maven Repository 中维护 Maven 工件。
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
<version>3.10.2</version> <!-- Or another compatible version -->
</dependency>
<dependency>
<groupId>org.eclipse.jface</groupId>
<artifactId>org.eclipse.jface</artifactId>
<version>3.10.2</version> <!-- Or another compatible version -->
</dependency>
<dependency>
<groupId>org.eclipse.core</groupId>
<artifactId>org.eclipse.core.commands</artifactId>
<version>3.10.2</version> <!-- Or another compatible version -->
</dependency>
将 Eclipse 存储库添加到
pom.xml
的 <repositories>
部分下:
<repositories>
<repository>
<id>eclipse-releases</id>
<url>https://repo.eclipse.org/content/groups/releases/</url>
</repository>
</repositories>
如果
3.10.2
不适合您,请确定与 Java 1.8 兼容的版本。 SWT 版本控制与 Eclipse 版本相关,3.10.x 之后的版本通常应与 Java 1.8 兼容。
您可以在此处浏览可用版本:Eclipse Public Maven Repository。
更新依赖项和存储库后:
mvn clean install
刷新依赖项缓存并测试构建。~/.m2/repository
) 并通过运行强制更新:
mvn clean install -U
如果 Maven 集成太麻烦,您可以:
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
<version>3.10.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/org.eclipse.swt.win32.win32.x86_64-3.10.2.jar</systemPath>
</dependency>
libs
文件夹中。3.x.x
) 而不是 R
以获得更好的兼容性。这样,您的项目就会得到复兴和现代化!