Como desenvolvedor Java, se você for criar uma ferramenta de comparação de código ou aplicativo ou precisar gerenciar várias versões de arquivos de código, pense em como **comparar e mesclar arquivos de código-fonte em Java **. Nesse caso, este artigo explicará com que facilidade podemos fazer isso sem escrever várias linhas de código. Além disso, veremos como podemos recuperar, aceitar ou descartar as alterações ao mesclar os arquivos de código-fonte.
Este artigo cobrirá os pontos indicados abaixo:
- Biblioteca Java para comparar e mesclar arquivos de código-fonte
- Como comparar e mesclar arquivos de código-fonte em Java
- Obtenha a lista de alterações usando Java
- Opções avançadas na biblioteca de comparação de código Java
Biblioteca Java para comparar e mesclar arquivos de código-fonte
Para comparar e mesclar arquivos de código-fonte, usaremos a comparação de código biblioteca Java, que consiste em todos os recursos importantes e excelentes de comparação de código-fonte. Esta biblioteca de comparação de código Java pode ser baixada ou pode ser instalada diretamente usando a configuração do Maven conforme fornecido abaixo.
<repository>
<id>groupdocs-artifacts-repository</id>
<name>GroupDocs Artifacts Repository</name>
<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>22.11</version>
</dependency>
Como comparar e mesclar arquivos de código-fonte em Java
Suponha que temos dois arquivos (source.cs e target.cs) de diferentes versões de um código-fonte, conforme mostrado na captura de tela a seguir.
Considerando os arquivos acima, vamos escrever um trecho de código em Java seguindo as etapas abaixo:
- Inicialize a classe Comparer com o caminho ou fluxo do documento de origem.
- Invoque o método add() e especifique o caminho ou fluxo do documento de destino.
- Invoque o método compare().
O exemplo de código a seguir mostra como é fácil comparar e mesclar arquivos de código-fonte em Java.
//Instantiate Comparer object with source document path or stream; | |
try (Comparer comparer = new Comparer(SourceFile)) { | |
// Invoke add method and specify target document path or stream. | |
comparer.add(TargetFile); | |
//Invoke compare method. | |
final Path resultPath = comparer.compare(ResultPath); | |
} |
Como resultado, obteremos o arquivo de código-fonte mesclado e um arquivo HTML destacando as alterações no código. Observe que os elementos excluídos serão marcados em vermelho , os adicionados – em azul e os modificados – em verde .
Obtenha a lista de alterações usando Java
Para obter a lista de todas as alterações após a comparação, devemos escrever o código conforme as seguintes etapas:
- Inicialize o objeto Comparer com o caminho do arquivo de origem.
- Invoque o método add() e especifique o caminho do arquivo de destino.
- Invoque o método compare().
- Obtenha a lista de alterações usando o método getChanges().
O exemplo de código abaixo demonstra como obter a lista de todas as alterações.
//Initialize Comparer object with source file path | |
try (Comparer comparer = new Comparer(sourceFile)) { | |
//Invoke [add][] method and specify target file path. | |
comparer.add(targetFile); | |
//Call compare method | |
final Path resultPath = comparer.compare(); | |
//Get the list of changes by using getChanges method | |
ChangeInfo[] changes = comparer.getChanges(); | |
//Display the changes count | |
System.out.println("Count of changes: " + changes.length); | |
} |
Opções avançadas na biblioteca de comparação de código Java
Se você precisar aceitar ou rejeitar várias versões de código, talvez seja necessário aplicar ou descartar as alterações. Neste caso, por favor, siga os passos indicados abaixo:
- Inicialize o objeto da classe Comparer com o caminho ou fluxo do documento de origem.
- Chame o método add() e defina o caminho do documento de destino.
- Invoque o método compare().
- Invoque o método getChanges() e obtenha a lista de alterações detectadas.
- Defina ComparisonAction do objeto de alteração necessário para o valor ComparisonAction.ACCEPT ou ComparisonAction.REJECT.
- Chame o método applyChanges() e passe a coleção de alterações para ele.
O trecho de código a seguir mostra como usar as opções avançadas da biblioteca de comparação de código.
//Initialize Comparer object with source file path | |
try (Comparer comparer = new Comparer(sourcePath)) { | |
//Invoke [add][] method and specify target file path. | |
comparer.add(targetPath); | |
//Call compare method | |
final Path resultPath = comparer.compare(outputPath); | |
//Get the list of changes by using getChanges method | |
ChangeInfo[] changes = comparer.getChanges(); | |
//Set ComparisonAction of needed change object to ComparisonAction.ACCEPT value. | |
for (int i = 0; i < 10; i++) { | |
changes[i].setComparisonAction(ComparisonAction.ACCEPT); | |
} | |
//Set ComparisonAction of needed change object to ComparisonAction.REJECT value. | |
for (int i = 10; i < changes.length; i++) { | |
changes[i].setComparisonAction(ComparisonAction.REJECT); | |
} | |
// Call applyChanges method and pass collection of changes to it. | |
comparer.applyChanges(resultPath, new ApplyChangeOptions(changes)); | |
} |
Obtenha uma licença gratuita
Você pode obter uma licença temporária gratuita para experimentar a API sem limitações de avaliação.
Conclusão
Resumindo, esperamos que você tenha aprendido como comparar e mesclar arquivos de código-fonte em Java usando uma biblioteca de comparação de código Java. Como resultado, você obtém o resumo do conteúdo inserido ou excluído. Além disso, você percorreu os caminhos para obter a lista de alterações e aceitar ou rejeitar as alterações identificadas.
Você pode visitar a documentação para explorar outros recursos.
Faça uma pergunta
Você pode nos enviar suas perguntas ou dúvidas em nosso fórum.
perguntas frequentes
Como comparar e mesclar arquivos de código-fonte em Java?
Inicialize a classe Comparer com o caminho ou fluxo do documento de origem, chame o método add() e defina o caminho ou fluxo do documento de destino. Depois disso, invoque o método compare() da classe Comparer.