我们的项目有一个“非托管配置文件”和节省时间的自动格式化。我希望能够修改此非托管配置文件的设置,并能够将它们重新签入到版本控制中。
Eclipse 的帮助文档非常无用(“您不能更改这样的配置文件,只有配置文件的创建者(管理员)可以更改它。”)。
我不确定这是否允许您将您的配置文件重新签入版本控制,但以下过程将允许您在任何已签出源的计算机上编辑您的配置文件。
要编辑您的配置文件,您必须在 Eclipse 中重新创建配置文件,您可以轻松地执行以下操作:
这将允许您重新创建配置文件,并允许您像往常一样在 Eclipse 中对其进行修改。
注意:此过程适用于 Eclipse Indigo
问题是托管配置文件实际上存储在您的工作区而不是您的项目中。当您进行项目特定更改(例如选择不同的配置文件)时,设置会被推送到您的项目中。但是项目中的设置与配置文件(工作区)中的设置格式不同。
目前eclipse没有能力反向执行此操作。也就是说,它不能从您的项目文件夹中获取设置来在工作区中创建配置文件。实际上,“非托管配置文件”是您丢失了源代码的配置文件。
我发现对配置文件进行逆向工程的最简单方法是生成一个可以导入的 XML 配置文件(在格式化程序设置 --> 导入按钮下)。
对项目的设置进行逆向工程;我编写了以下程序。它从项目文件夹中读取设置并将它们写为 XML 文件:
import java.io.*;
public class ExtractFormatter {
public static void main( String args[] ) throws IOException {
if (args.length < 2)
throw new RuntimeException("No arguements specified; expected <project folder> <output file>");
File inFile = new File(args[0]);
File outFile = new File(args[1]);
BufferedReader reader = new BufferedReader(new FileReader(new File(inFile,
".settings/org.eclipse.jdt.core.prefs")));
PrintWriter writer = new PrintWriter(outFile);
writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>");
// Retain the date from the file as a comment
String line = reader.readLine();
writer.println("<!-- Exported from " + inFile + " -->");
writer.println("<!-- " + line + " -->");
writer.println("<profiles version=\"12\">");
writer.println("<profile kind=\"CodeFormatterProfile\" name=\"" + inFile.getName()
+ "\" version=\"12\">\")");
// Now read every setting for the formatter and write it out as an XML tag.
for (line = reader.readLine(); line != null; line = reader.readLine()) {
if (line.startsWith("org.eclipse.jdt.core.formatter.")) {
String[] parts = line.split("=", 2);
writer.println("<setting id=\"" + parts[0] + "\" value=\"" + parts[1] + "\" />");
}
}
writer.println("</profile>");
writer.println("</profiles>");
reader.close();
writer.close();
}
}
当您有一个非托管配置文件时,Eclipse 应该在您的项目目录中放置一个 .settings 文件夹。到目前为止,我发现更改设置的唯一方法是进入项目中的 .settings 文件夹并在其中手动编辑 .prefs 文件。