我们在项目中依赖Eclipse格式化程序来强制执行格式约定。它很棒,我们非常喜欢它。
我们将格式化程序文件与源代码控制中的项目保持在一起,并要求每个人将此格式化程序导入Eclipse。唯一严重的问题是,每当有人修改格式化程序并提交更改时,每个团队成员都需要手动“重新导入”格式化程序。并且很容易忘记这样做,所以我们经常最终在团队中使用不同版本的格式化程序。
格式化程序文件更新后,有没有办法让Eclipse自动使用新版本的格式化程序? (我的意思是,我们可以只对Eclipse说“这里是格式化程序文件的路径,总是使用此文件的当前版本作为格式化程序”?)这会很棒!
有什么想法吗?
答案 0 :(得分:14)
<强>简介强>
格式化程序,代码模板等可以作为项目特定设置存储在文件夹.settings/
中。您不一定需要在工作区中重新导入Formatter。
您可以将项目特定设置与svn:externals
结合使用,以“注入”项目中的格式化程序,代码模板等。
<强> svn:externals: 强>
有时构造一个由其组成的工作副本是有用的 许多不同的结帐。例如,您可能想要不同的 子目录来自存储库中的不同位置,或 也许来自不同的存储库。
<强>项目强>
com.xyz.codeconventions
的java项目,我们在其中添加了一个项目特定的格式化程序和代码模板。该项目受版本控制。svn:externals
属性以“注入”项目.settings/
中的com.xyz.codeconventions
文件夹(这是存储项目特定数据的文件夹)< / LI>
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 # (this folder will get "injected" in project1 and project2) | +-- org.eclipse.jdt.core.prefs +-- org.eclipse.jdt.ui.prefs
其他评论/限制
svn
个用户,但如果您使用git
,则类似于svn:externals,名为Submodules。.settings/
- 文件夹,因为使用svn:externals
时无法覆盖现有文件。.settings/
文件夹中的不同文件,这种方法可能不是你想要的。我们的项目始终具有相同的.settings
个文件。<强>来源强>
答案 1 :(得分:0)
如果我想正确理解你的问题:
我的猜测是每个人都在每次修改时手动将配置导入eclipse。
您可以将eclipse配置为使用远程配置文件,而不是直接将文件导入eclipse。
该配置将适用于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配置的完整详细信息