Estou trabalhando com *.jar
arquivos, pelo que entendi, é um formato de arquivo que posso manipular com ferramentas padrão como zip
ou unzip
comandos.
Muitas vezes preciso substituir um arquivo já compactado. Até agora eu descompactei, apaguei o arquivo antigo, movi o novo para o lugar certo (é um arquivo fonte, então éaltamente em camadas), e então eu o compactei novamente.
É possível fazer isso mais rapidamente? Seriam 3 informações: o arquivo a ser substituído, o arquivo de destino no qual substituir e o caminho para o arquivo a ser substituído no arquivo.
Responder1
Você pode fazer isso em duas etapas:
zip -d myjar.jar path/to/file/to/delete
jar uf myjar.jar -C base/path path/to/file/to/add
Você pode ignorar a -C base/path
parte se já estiver no diretório base (contendo path/to/file/to/add
).
Ao trabalhar com JARs em vez de arquivos ZIP simples, você deve adquirir o hábito de usá-los jar
na zip
medida do possível; garante que o manifesto seja armazenado corretamente.
Com um arquivo ZIP simples, você pode adicionar ou atualizar um arquivo simplesmente (re)arquivando-o; então, em vez do jar
comando acima, use:
zip myzip.zip path/to/file/to/add
Você precisa estar no diretório base para que isso funcione. ( jar
também funcionará, mas é estranho exigir isso jar
ao trabalhar com arquivos ZIP.)