gpt4 book ai didi

eclipse - 将自定义Eclipse格式化程序应用于Gradle项目

转载 作者:行者123 更新时间:2023-12-03 04:23:26 24 4
gpt4 key购买 nike

我目前在一个项目中使用Eclipse Oxygen和Gradle 4.4。在Eclipse中,可以在工作区或项目上手动设置自定义Java格式化程序。这要求团队中的每个人在创建新工作区时都必须导入格式器XML文件。为了避免队友忘记应用格式化程序,并根据商定的样式指南编写代码,我试图在将项目导入Eclipse时自动将Gradle项目配置为使用我们的自定义格式化程序。格式文件位于项目目录中。我没有找到有关如何最好地实现这一目标的任何可靠信息。我尝试了以下似乎在表面上起作用的方法,但是似乎导致"Faceted Project Problem (Java Version Mismatch: Java compiler level does not match the version of the installed Java project facet."错误。在Gradle脚本中的其他位置,sourceCompatibilitytargetCompatibility设置为1.8,但是项目中的编译器遵从性级别设置为9。如果我不尝试覆盖格式化程序,则不会发生这种情况。当我尝试将任何更改应用于“属性”对话框中的项目时,我也会收到错误消息:"Error: Exception occurred while saving project preferences: /my-project/.settings/org.eclipse.jdt.ui.prefs."
到目前为止,这是我尝试过的:

task eclipseConfig {
group='eclipse'
dependsOn cleanEclipse
dependsOn cleanEclipseWtp
dependsOn tasks['eclipse']
dependsOn eclipseWtp

// .settings directory may not exist yet
file('.settings').mkdir()

// Attempt to configure Eclipse to use our custom Java formatter
File f = file('.settings/org.eclipse.jdt.core.prefs')
f.write('eclipse.preferences.version=1\n')
def settings = new XmlSlurper().parse(rootProject.file('formatters/eclipse-java-formatter.xml')).profile.setting
for(def setting : settings) {
f.append("${setting['@id']}=${setting['@value']}\n")
}
f.append('org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter')

// Another attempt to configure Eclipse to use our custom Java formatter
f = file('.settings/org.eclipse.jdt.ui.prefs')
f.write('eclipse.preferences.version=1\n')
f.append('org.eclipse.jdt.ui.formatterprofiles=')
f.append(rootProject.file('formatters/eclipse-java-formatter.xml').text
.replaceAll(~/\r*\n/, '\\\\r\\\\n').replaceAll('=', '\\\\='))
f.append('\nformatter_profile=_Custom Java Styles')
}

任何帮助是极大的赞赏。

最佳答案

您的方向是正确的:格式化和清除配置保留在org.eclipse.jdt.core.prefs目录内的org.eclipse.jdt.ui.prefs.settings文件中。但是我不敢逐行弄乱这些文件的内容,因为它们遵循Eclipse自己的专有格式,我怀疑这种文档是否有充分的文献记载,也没有保证及时地保持不变。

取而代之的是,我将在Eclipse中配置一个虚拟项目的格式和清理,然后将每个文件的全部内容(而不是逐行)复制到gradle项目中,并使gradle脚本完全粘贴每个在将新项目导出到Eclipse时使用它们。通过像Eclipse创建一样复制和粘贴完整文件,可以避免语义错误,例如您正在尝试的错误。

无论如何,如果您仍然想逐行处理这些文件,我认为导致当前错误的原因是您忘记了以下一些声明:

  • org.eclipse.jdt.core.prefs:org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
  • org.eclipse.jdt.core.prefs:org.eclipse.jdt.core.compiler.compliance=1.8
  • org.eclipse.jdt.core.prefs:org.eclipse.jdt.core.compiler.source=1.8
  • org.eclipse.wst.common.project.facet.core.xml:<installed facet="java" version="1.8"/>
  • 关于eclipse - 将自定义Eclipse格式化程序应用于Gradle项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48633564/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com