Eclipse中的自动更新格式化程序

12

我们在项目中依靠Eclipse格式化程序来强制执行格式约定。它非常好用,我们真的很喜欢它。

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

是否有任何方法让Eclipse在更新格式化程序文件时自动使用新版本的格式化程序? (我的意思是,我们能否告诉Eclipse,“这是格式化程序文件的路径,请始终使用此文件的当前版本作为格式化程序”?)这将非常棒!

有什么想法吗?


1
https://dev59.com/XnNA5IYBdhLWcg3wdtpd 这个链接是否回答了你的问题? - C-Otto
2个回答

14

介绍

格式化程序、代码模板等可以作为项目特定设置存储在文件夹.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的示例:

key                   value
----                  ------
svn:externals         http://path/to/com.xyz.codeconventions/.settings .settings

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

仓库布局

我们的仓库结构如下所示:

 <root>
   |
   +-- com.xyz.project1 # (svn:externals -> <root>/codeconventions/.settings .settings)
   |    |
   |    +-- src
   |    +-- <...> 
   +-- com.xyz.project2 # (svn:externals -> <root>/codeconventions/.settings .settings)
   |    |
   |    +-- src
   |    +-- <...> 
   +-- com.xyz.codeconventions
        |
        +-- .settings  # (该文件夹将会被“注入”到project1和project2中)
             |
             +-- org.eclipse.jdt.core.prefs
             +-- org.eclipse.jdt.ui.prefs

附加说明/限制

  • 这种方法仅适用于svn用户,但如果你使用git,有一些类似于svn:externals的东西叫做Submodules
  • 确保在project1和project2中没有.settings/-folder,因为使用svn:externals无法覆盖现有文件。
  • 如果您有需要完全不同格式化程序或.settings/文件夹中不同文件的Java项目,则此方法可能不是您要寻找的。我们的项目始终具有相同的.settings文件。

来源


0
如果我正确理解您的问题,您想要:
  1. 所有团队成员共享相同的checkstyle配置
  2. 在任何更改后,所有团队成员自动使用最新版本的配置
我的猜测是,每个人都会在每次修改时手动将配置导入到eclipse中。
与其直接将文件导入到eclipse中,不如配置eclipse使用远程配置文件。

eclipse checkstyle preferences

该配置将适用于Eclipse下的所有项目,并且将保持最新状态。整个过程在为团队使用通用Checkstyle规则中有详细说明。这需要所有团队成员仅需设置一次Eclipse。

另一方面,如果您正在使用Maven,则可以使用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配置的完整细节Maven Checkstyle and Eclipse


有趣的回答,但是问题不对 :). 我们目前没有使用Checkstyle。问题是关于Eclipse格式化程序内置功能的。无论如何,很高兴知道可以使用EclipseCS来完成它。和平! - Piotr Sobczyk
抱歉,当我在Eclipse中看到“formatter”时,我立刻想到了Checkstyle :-) - Guillermo Moscoso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接