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

时间:2013-02-04 07:39:29

标签: eclipse formatter eclipse-formatter

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

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

格式化程序文件更新后,有没有办法让Eclipse自动使用新版本的格式化程序? (我的意思是,我们可以只对Eclipse说“这里是格式化程序文件的路径,总是使用此文件的当前版本作为格式化程序”?)这会很棒!

有什么想法吗?

2 个答案:

答案 0 :(得分:14)

<强>简介

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

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

  

<强> svn:externals:

     

有时构造一个由其组成的工作副本是有用的   许多不同的结帐。例如,您可能想要不同的   子目录来自存储库中的不同位置,或   也许来自不同的存储库。

<强>项目

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

    对于应该使用此格式化程序的所有项目,您必须定义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  # (this folder will get "injected" in project1 and project2)
                 |
                 +-- org.eclipse.jdt.core.prefs
                 +-- org.eclipse.jdt.ui.prefs
    
    

    其他评论/限制

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

    <强>来源

答案 1 :(得分:0)

如果我想正确理解你的问题:

  1. 所有团队成员共享相同的checkstyle配置
  2. 所有团队成员在任​​何更改后自动使用最新版本的配置
  3. 我的猜测是每个人都在每次修改时手动将配置导入eclipse。

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

    eclipse checkstyle preferences

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

    中查看maven配置的完整详细信息