问题标签 [buildship]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
263 浏览

java - 当引用特定版本的 Glassfish JAXB 时,Buildship Java 启动配置缺少 JAR

背景

我正在将一个大型项目从 8 迁移到 OpenJDK 11.0.2。因此,我需要包含 JAXB 实现。

问题

我观察到使用 Buildship (3.0.1.v20181217-1554) 从 Eclipse 2019-03 (4.11.0) 中启动的应用程序不包含任何外部 JAR 依赖项。

这只影响启动配置,编译很好。

分析

我已将故障隔离到使用 Glassfish JAXB 实现的 2.4.0-b180725.0644 版本时。使用 2.3.1 按预期工作。

我究竟做错了什么?我怎样才能避免这个问题

笔记。现在提出https://bugs.eclipse.org/bugs/show_bug.cgi?id=548455

测试用例

构建.gradle

Java 测试文件

使用 2.3.1 时的输出

使用 2.4.0-b180725.0644 时的输出

0 投票
0 回答
210 浏览

java - 具有 buildship 集成的 Eclipse 2019-06:DocumentBuilder 不可访问

我有一个多项目 gradle 设置 (settings.gradle),我使用 OpenJDK-12 将其导入 eclipse。

导入后,我得到如下编译错误(在某些但不是所有项目上):

The type javax.xml.parsers.DocumentBuilder is not accessible

如果我清理(并自动重建)项目,错误就会消失。但是,如果我清理了所有项目,则会再次出现错误(不一定是完全相同的错误,但它们都是“......不可访问”的类型。

这对我来说似乎是一个日食错误,但如果有人知道我能做些什么来进一步缩小问题范围,我将不胜感激。

0 投票
0 回答
337 浏览

eclipse - 项目构建目录中的 gradle.properties 无法通过 Eclipse/Buildship 读取 - 命令行工作正常

我使用最新的 Eclipse(4.12 版)和 Buildship Gradle Integration 3.0。我可以在 Gradle 任务视图中看到任务,但无法成功运行任务。

当我从命令行运行任务时,它工作正常。

当我通过双击 Gradle 任务视图中的任务来运行任务时,任务失败并显示以下错误消息:

java.lang.IllegalArgumentException: Pfad[src] 存在。

这转化为

java.lang.IllegalArgumentException:路径 [src] 不存在。

src是项目的 gradle.properties 文件中定义的目录,如下:

项目的 gradle.properties 文件与 build.gradle 脚本位于同一目录中。
在 build.gradle 文件中,我将属性称为project.GEN_ROOT_PATH

我相信这就是我从 Gradle Tasks 视图运行任务时异常抱怨的原因。

我不明白,我在互联网上找不到有用的信息来解决这个问题。

正如我之前所说,任务可以在命令行中成功运行。
在 Eclipse 中运行时任务失败。有谁知道问题可能是什么?我怎样才能找到可能的解决方案?

0 投票
0 回答
232 浏览

eclipse - Eclipse buildship gradle 配置(gradlew,或 --init-script)

我的公司使用自定义gradlew的传递--init-script--project-prop选项来gradle。

如何将这些相同的选项传递给我通过 eclipse.jdt.ls 运行的 eclipse buildship

0 投票
2 回答
923 浏览

eclipse - Eclipse 挂起添加 Gradle 性质

使用 Buildship 3.1.2 运行 Eclipse 2019-06。从现有文件夹创建一个项目,当添加 gradle 性质时,Eclipse 做了一些工作,然后卡在“导入根项目:运行构建”。已经删除并重新安装了 Gradle,删除并重新安装了 Buildship,删除了 ~/.gradle 和 /.gradle 文件,尝试使用 Gradle 包装器和当前版本的 Gradle (5.6.2)。.metadata/.log 帮助文件中没有任何内容。

0 投票
1 回答
58 浏览

eclipse - 如何指定要从 maven 存储库中获取/下载测试 jar?

从 maven 存储库获取测试 jar 的方法是什么?如果我想获取存储库中 jar 的 javadocs 或源代码,我会将以下内容放入 build.gradle 文件中:

理想情况下,获取测试罐只需添加

在同一个地方,但它不是那样工作的。那么如何实现呢?有关测试(和其他)罐子的示例,请参阅: https://repo1.maven.org/maven2/io/undertow/undertow-core/2.0.27.Final/

0 投票
1 回答
30 浏览

eclipse - build.gradle 中与 Buildship 互斥的存储库

我有一个多项目如下:

在这些中,我使用依赖项和插件的默认存储库。我们将 Eclipse 与Buildship一起使用,直到现在解决方案大多是使用Refresh Gradle Project.

问题:一些同事和我们位于不同网络上的 CI 服务器也必须为所有依赖项和插件使用自定义存储库。这个虚拟仓库还需要身份验证、证书和代理来增加趣味性。

尝试在 中指定两个存储库build.gradle,但订购它们没有帮助。第一个失败将导致构建失败,其中一个将始终失败,具体取决于网络。考虑将变量作为可以从文件中覆盖/读取的第一行,但由于pluginManagement必须是第一个元素settings.gradle并且在任何事情之前进行评估,这个选项似乎也失败了。

我需要的是在这些存储库之间轻松切换,但仍以某种方式与 Buildship 兼容。

除了创建多组这些文件(例如build.1.gradle/并在每次构建之前使用它们的内容settings.1.gradle覆盖标准build.gradle/ )之外,我真的没有其他办法。settings.gradle

这可以通过 Gradle 实现还是以我可能错过的智能方式实现?

0 投票
1 回答
375 浏览

java - 为什么 gradlew build 命令不能只编译和构建已更改的内容并使过程更快?

eclipse 下自动构建的特性比./gradlew build快很多。

经过一些研究,我的发现是它只编译和构建更改的文件并将其替换到构建文件夹中。

那么为什么./gradlew build命令不能编译和构建已经更改的文件并将其替换到 build 文件夹中,并使整个构建过程更快。

我最近开始使用热插拔代理 + DCEVM 的自动构建功能。

0 投票
1 回答
1457 浏览

java - Springboot Gradle 插件不适用于 Eclipse

问题

当我使用这个springboot插件springboot-gradle-plugin时,我的java项目没有在Eclipse中运行
它抛出这个异常

有问题的示例项目

可以在此处找到具有此问题的示例存储库:springboot-gradle-plugin-issue
要查看此问题,您需要使用 Eclipse 运行此项目(我使用 eclipse 2019-09 运行它)

这个项目做什么

这个 java 项目使用 gradle 这个插件spring-boot-gradle-plugin
该项目在控制台中打印我的 build.gradle 文件中声明的应用程序版本。在我的 gradle.build 文件中,我包含以下几行:

这条线它所做的只是将一个名为' bootBuildInfo '的Gradle任务添加到gradle中,并在运行此任务时创建此文件META-INF/build-info.properties
在Java中,运行App时,springboot会自动加载并读取META-INF/build-info.properties来创建一个bean。

Eclipse的问题

当我在终端中使用 gradle 构建并运行生成的 jar 文件时,所有这些都有效,但是当我通过 Eclipse 运行我的应用程序时它不起作用。
它不会创建文件META-INF/build-info.properties并且当 springboot 尝试加载它时会抛出 bean not found 异常,因为它找不到文件。

找到解决方法

如果我执行以下操作之一,该项目将运行:
- 在 src/main/resources 文件夹下
手动创建 META-INF/build-info.properties - 在 build/resources/main 文件夹下手动创建 META-INF/build-info.properties

不需要这些方法,因为它不会自动更新 build-info.properties

0 投票
1 回答
292 浏览

eclipse - 如何在 Eclipse 中可靠地设置编译后字节码增强构建器?

我需要使用一个附加构建器来设置一个 Eclipse 项目,该构建器增强了早期构建器(最好是 Eclipse 自己的)生成的 Java 字节码。我设法让这个构建器正确运行并增强了 Eclipse Java 构建器的输出,但几秒钟后 Eclipse 重新运行了它的 Java 构建器并重新设置了字节码。它不会重新运行我的增强生成器。

我的设置

  • 作为“Gradle 项目”导入 Eclipse 2019-12(使用 Buildship)。
  • 手动(并使用 Gradle 自动添加)自定义Ant构建器(最终调用 Gradle)以增强 Eclipse Java 构建器在 bin/main 中生成的代码。此构建器设置为在Manual BuildAuto Build上运行,而不是After a "Clean"during a "Clean"
  • 默认情况下,上面的最终有三个构建器,从上到下:1. Gradle Project Builder, 2.Java Builder和 3.我的字节码增强构建器(是的,它在最后列出)。

我尝试过的替代方案

  1. 将我的构建器设置为在“清洁”之后/期间运行的一些组合也没有成功。不确定这些与哪些确切事件有关,真的。
  2. 让建造者在之后刷新项目......而且也没有 - 没有帮助。
  3. 尝试使用 Gradle 脚本中的以下位删除 Java Builder(不起作用 - 它会自行恢复):

    /li>
  4. 尝试手动禁用 Java 构建器并让我的字节码增强构建器也构建文件本身(使用 Gradle)。这将存储org.eclipse.jdt.core.javabuilder.launch具有以下内容的以下文件文件...但重新启动构建器时会重新启用:

    /li>
  5. 我尝试(但失败)查找是否有一些工作区文件(而不是项目文件)被更改(以及)以禁用 Java 构建器。

问题

  1. 为编译后字节码增强设置 Eclipse 的“正确”方法是什么?
  2. 是什么导致 Eclipse 重新运行以前的构建器而不重新运行我的?
  3. 有没有办法解决(1)?
  4. 如何可靠地禁用 Java 构建器?

任何人都可以帮忙吗?谢谢!

更新附加细节 我添加了 12 个构建器,并让它们都将输出附加到同一个日志文件以进行研究。12 个额外的构建器只是提供信息 - 4 个在 Java 构建器之前,4 个在 Java 和增强构建器之间,4 个在增强构建器之后。12 个中的每一个都只在四种条件之一中运行(因此为 3x4)。它们排列如下:

  1. Gradle 项目生成器
  2. 1a-after-clean(仅在 "Clean" 之后运行)
  3. 1b-manual(仅在手动构建期间运行)
  4. 1c-auto(仅在自动构建期间运行)
  5. 1d-during-clean(仅在 "Clean" 期间运行)
  6. Java 生成器
  7. 2a-after-clean(仅在 "Clean" 之后运行)
  8. 2b-manual(仅在手动构建期间运行)
  9. 2c-auto(仅在自动构建期间运行)
  10. 2d-during-clean(仅在 "Clean" 期间运行)
  11. 字节码增强生成器
  12. 3a-after-clean(仅在 "Clean" 之后运行)
  13. 3b-manual(仅在手动构建期间运行)
  14. 3c-auto(仅在自动构建期间运行)
  15. 3d-during-clean(仅在“清洁”期间运行)

12 个信息构建器中的每一个都写下时间、名称和所选测试类的大小。未增强的长度为 46243 字节。增强后它变为 53338 字节长。

这是仅在此项目上运行“清理”后的日志(启用“自动构建”):

更新 2:重现的最小示例

  1. 创建一个文件夹 - 随意命名。
  2. 在该文件夹中创建包含以下内容的build.grade文件:

    /li>
  3. 在那里也创建一个 src/main/java/learner/TestEntity.java 如下:

    /li>
  4. 执行gradle compileJavabuild/classes/java/main/learner/TestEntity.class在 ASCII 或十六进制查看器中打开生成的二进制文件并观察$$_hibernate_write_name其中的内容。

  5. 将此项目作为 Gradle 项目导入 Eclipse(比如 2019-12)并构建它。打开结果bin/main/learner/TestEntity.class并观察不到这些。