Il problema è che un profilo gestito è effettivamente memorizzato nel tuo spazio di lavoro, non nel tuo progetto. Le impostazioni vengono inserite nel tuo progetto quando apporti modifiche specifiche al progetto, come la selezione di un profilo diverso. Ma le impostazioni nel progetto sono di un formato diverso da quelle nel profilo (nell'area di lavoro).
Attualmente l'eclisse non ha la capacità di eseguire ciò al contrario. Questo è che non può prendere le impostazioni dalla cartella del progetto per creare un profilo nell'area di lavoro. In effetti un "Profilo non gestito" è un profilo a cui hai perso il codice sorgente.
Il modo più semplice che ho trovato per decodificare il profilo è generare un file profilo XML che può essere importato (sotto le impostazioni del formattatore -> pulsante di importazione).
Per decodificare le impostazioni da un progetto; Ho scritto il seguente programma. Si legge le impostazioni da una cartella di progetto e li scrive in un file 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();
}
}
fonte
2012-04-28 10:30:25
Questa sembra essere la risposta. Quello che ho fatto per ovviare a questo è di apportare modifiche a un profilo personalizzato in un altro progetto, esportandolo e osservando quali elementi sono stati modificati e apportando le stesse modifiche nella copia di .settings. – magneticMonster