Il file creato durante la creazione di Maven non può essere copiato


2

Hardware: MacBook Pro (Retina, 15 pollici, metà 2015) \ OS: OS X El Capitan, 10.11.6

Problema: ho un progetto standard maven che costruisco usando mvn clean install dalla riga di comando. Ricevo un errore nel processo di installazione che dice Autorizzazione negata per il file jar creato in modo che non possa copiarlo.

Guardando nella directory vedo:

$ cd target/
$ ls -al
total 230856
drwxr-xr-x  10 u1  g1        340 Dec 21 16:08 ./
drwxr-xr-x  12 u1  g1        408 Dec 21 16:08 ../
drwxr-xr-x   5 u1  g1        170 Dec 21 16:08 classes/
drwxr-xr-x   4 u1  g1        136 Dec 21 16:08 generated-sources/
drwxr-xr-x   3 u1  g1        102 Dec 21 16:08 jcasgen/
drwxr-xr-x   3 u1  g1        102 Dec 21 16:08 maven-archiver/
drwxr-xr-x   3 u1  g1        102 Dec 21 16:08 maven-status/
-rw-r--r--   1 u1  g1      38239 Dec 21 16:08 rules-0.0.1-SNAPSHOT-sources.jar
-rw-r--r--   1 u1  g1  118102157 Dec 21 16:08 rules-0.0.1-SNAPSHOT.jar
-rw-r--r--   1 u1  g1      53247 Dec 21 16:08 original-rules-0.0.1-SNAPSHOT.jar

Se lo faccio ls -lenon vedo alcun ACL esteso. Se provo a copiare il file JAR di grandi dimensioni:

$ cp rules-0.0.1-SNAPSHOT.jar ~
cp: rules-0.0.1-SNAPSHOT.jar: Permission denied
$ sudo cp rules-0.0.1-SNAPSHOT.jar ~
Password:
cp: rules-0.0.1-SNAPSHOT.jar: Permission denied
$ cp rules-0.0.1-SNAPSHOT-sources.jar ~
$ 

È solo quel singolo file che non verrà copiato. Ho scoperto che posso mvarchiviare il file in altri luoghi, ma la copia non funziona, non importa dove l'ho messa.

Ciò che è interessante è che posso spostare il mio codice ovunque nel file system, rieseguire la build e quel singolo file creato ha lo stesso problema.

Ho avviato la console di ripristino e ripristinato gli ACL e le autorizzazioni per la mia home directory senza alcun effetto. Ho eseguito Utility Disco e mostra che tutto va bene.

Qualcuno ha mai visto qualcosa di simile prima? Altre persone Mac qui stanno dicendo che dovrò avviare il singolo utente e fsck -yl'unità.

Informazioni addizionali

Per impostazione predefinita, il passaggio di installazione di Maven utilizza il plug-in maven-shade per creare un uber-jar. È questo super-vaso che non può essere copiato. Se disabilito il plug-in maven-shade, in modo che il JAR finale sia un normale vaso, non vedo il problema.

Ho Trend Micro in esecuzione sul mio Mac se ciò potrebbe fare la differenza.

Ho scoperto che se sovrascrivo l'Uber-Jar con dati diversi (stesso nome) il file diventa copiabile. Per esempio:

cat > rules-0.0.1-SHAPSHOT.jar
asdf
^D

Successivamente, posso copiare il file.

Ho provato a guardare le cose con, opensnoopma tutto quello che vedo è un "permesso negato" su un aperto da java.


1
Esiste un processo che ha il file aperto (usare lsofper controllare)? Il file rimane non copiabile dopo un riavvio?
Nohillside

1
Il file rimane non copiabile dopo un riavvio. lsof non mostra alcun processo con esso aperto.
Matthew Markland,

Quelle informazioni aggiunte - vuoi dire che Maven crea ancora un barattolo e quel barattolo può essere copiato?
Segna il

Mi scuso, avrei dovuto essere più chiaro. Se uso il plug-in maven e creo il file JAR di dimensioni jumbo, quel file JAR non è copiabile. Se disabilito il supporto ombra e genera un JAR "normale", quel file si comporta come mi aspetto. Il file JAR più grande potrebbe contenere una stringa che innesca Trend Micro per non consentire la copia?
Matthew Markland,

@MatthewMarkland Disabilita temporaneamente TrendM, poi lo vedrai
klanomath

Risposte:


1

Sebbene questa sia una risposta insoddisfacente, l'aggiornamento all'ultima versione del plugin maven-shade "risolve" il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.