【问题标题】:Auto updating formatter in Eclipse在 Eclipse 中自动更新格式化程序
【发布时间】:2013-01-18 21:21:06
【问题描述】:

我们在项目中依赖 Eclipse 格式化程序来为我们强制执行格式化约定。它工作得很好,我们真的很喜欢它。

我们将格式化程序文件与我们的项目一起保存在源代码控制中,并要求每个人将此格式化程序导入 Eclipse。唯一严重的问题是,每当有人修改格式化程序并提交更改时,每个团队成员都需要手动“重新导入”格式化程序。而且很容易忘记这样做,因此我们经常在团队中使用不同版本的格式化程序。

有什么方法可以让 Eclipse 在格式化文件更新时自动使用新版本的格式化程序? (我的意思是,我们可以对 Eclipse 说“这是格式化程序文件的路径,始终使用此文件的当前版本作为格式化程序”吗?)那太好了!

有什么想法吗?

【问题讨论】:

标签: eclipse formatter eclipse-formatter


【解决方案1】:

如果我正确理解您的问题,您希望:

  1. 所有团队成员共享相同的检查样式配置
  2. 所有团队成员在任​​何更改后自动使用最新版本的配置

我的猜测是你们每个人每次修改时都是手动将配置导入到eclipse中。

您可以将 eclipse 配置为使用远程配置文件,而不是将文件直接导入 eclipse。

该配置将适用于eclipse下的所有项目,并且是最新的。整个过程在这里解释Using common Checkstyle rules for teams。这需要所有团队成员设置一次 eclipse。

另一方面,如果您使用的是 ma​​ven,则可以使用 maven-eclipse-plugin 来描述要使用的 checkstyle 文件。只需将 maven 项目导入 eclipse 即可完成配置。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
    <additionalBuildcommands>
        <buildcommand>net.sf.eclipsecs.core.CheckstyleBuilder</buildcommand>
    </additionalBuildcommands>
    <additionalProjectnatures>
        <projectnature>net.sf.eclipsecs.core.CheckstyleNature</projectnature>
    </additionalProjectnatures>
    <additionalConfig>
        <file>
            <name>.checkstyle</name>
            <location>${URL}/eclipse-checkstyle.xml</location>
        </file>
    </additionalConfig>
</configuration>
....

可以在下面的文章Maven Checkstyle and Eclipse看到maven配置的完整细节

【讨论】:

  • 有趣的答案,但在一个错误的问题:)。我们目前没有使用 Checkstyle。问题是关于构建 Eclipse 格式化程序功能。无论如何,很高兴知道使用 EclipseCS 可以做到这一点。和平!
  • 抱歉,当我在 Eclipse 中看到格式化程序时,我立刻想到了 checkstyle :-)
【解决方案2】:

简介

格式化程序、代码模板等可以作为项目特定设置存储在文件夹.settings/ 中。您不一定需要在您的工作区中重新导入格式化程序。

您可以结合使用项目特定设置和svn:externals 在您的项目中“注入”格式化程序、代码模板等。

svn:externals:

有时构建一个由以下材料制成的工作副本很有用 许多不同的结帐。例如,您可能想要不同的 来自存储库中不同位置的子目录,或 可能完全来自不同的存储库。

项目

  1. 我们有一个名为com.xyz.codeconventions 的java 项目,我们在其中添加了一个项目特定的格式化程序和代码模板。此项目受版本控制。
  2. 对于所有其他项目,我们定义了一个 svn:externals 属性以从项目 com.xyz.codeconventions“注入”.settings/ 文件夹(这是存储项目特定数据的文件夹)
  3. 如果您现在想更改格式化程序,您可以编辑项目com.xyz.codeconventions 并使用svn commit 提交更改。团队必须在所有项目上svn update 才能获得最新版本的代码格式化程序。

配置

对于所有应该使用此格式化程序的项目,您必须定义一个 svn:externals 属性。

com.xyz.project1 的示例:

核心价值 ---- ------ svn:externals http://path/to/com.xyz.codeconventions/.settings .settings

在 Eclipse(在我的情况下是 Subversive)中,您可以使用 Team -&gt; Set property... 添加特定于 svn 的属性。

存储库布局

我们案例中的存储库结构如下所示:

| +-- com.xyz.project1 # (svn:externals -> /codeconventions/.settings .settings) | | | +-- 源代码 | +-- <...> +-- com.xyz.project2 # (svn:externals -> /codeconventions/.settings .settings) | | | +-- 源代码 | +-- <...> +-- com.xyz.codeconventions | +-- .settings #(这个文件夹将在 project1 和 project2 中“注入”) | +-- org.eclipse.jdt.core.prefs +-- org.eclipse.jdt.ui.prefs

其他 cmets/限制

  • 此方法仅适用于svn 用户,但如果您使用git,则类似于 svn:externals 的名称为Submodules
  • 确保 project1 和 project2 中没有 .settings/-文件夹,因为 svn:externals 无法覆盖现有文件。
  • 如果您的 java 项目需要完全不同的格式化程序或 .settings/ 文件夹中的不同文件,这种方法可能不是您想要的。我们的项目始终拥有相同的 .settings 文件。

来源

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    • 2020-05-10
    • 2014-02-15
    • 2012-03-27
    相关资源
    最近更新 更多