El archivo creado durante la compilación maven no se puede copiar


2

Hardware: MacBook Pro (Retina, 15 pulgadas, mediados de 2015) \ OS: OS X El Capitán, 10.11.6

Problema: Tengo un proyecto estándar de Maven que construyo usando mvn clean install desde la línea de comandos. Recibo un error en el proceso de instalación que dice Permiso denegado para el archivo jar creado para que no pueda copiarlo.

Buscando en el directorio veo:

$ 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

Si hago un ls -le No veo ningún ACL extendido. Si intento copiar el archivo JAR grande:

$ 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 ~
$ 

Es solo ese único archivo que no se copiará. He descubierto que puedo mv El archivo está en otros lugares, pero copiar no funciona, no importa dónde lo coloque.

Lo que sí es interesante es que puedo mover mi código a cualquier lugar del sistema de archivos, volver a ejecutar la compilación y ese único archivo creado tiene el mismo problema.

He arrancado a la consola de recuperación y he restablecido las ACL y los permisos de mi directorio de inicio sin ningún efecto. He ejecutado la Utilidad de Disco y muestra que todo está bien.

¿Alguien habia visto algo como esto antes? Otras personas de Mac aquí están diciendo que tendré que arrancar un solo usuario y fsck -y la unidad

Información adicional

Por defecto, el paso de instalación de Maven usa el plugin de maven-shade para construir un uber-jar. Es este uber-jar que no se puede copiar. Si desactivo el plug-in de maven shade, para que el JAR final sea un tarro normal, no veo el problema.

Tengo Trend Micro ejecutándose en mi Mac si eso pudiera hacer una diferencia.

Descubrí que si sobrescribo el uber-jar con datos diferentes (el mismo nombre), el archivo se puede copiar. Por ejemplo:

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

Después de eso, puedo copiar el archivo.

He tratado de ver cosas con opensnoop pero todo lo que veo es un "Permiso denegado" en un abierto por java.


1
¿Hay algún proceso en ejecución que tenga el archivo abierto? lsof verificar)? ¿El archivo permanece sin posibilidad de copia después de un reinicio?
nohillside

1
El archivo no se puede copiar después de un reinicio. lsof no muestra ningún proceso abierto.
Matthew Markland

Esa información adicional: ¿quieres decir que maven todavía crea un tarro y ese tarro se puede copiar?
Mark

Pido disculpas, debería haber sido más claro. Si utilizo el plug-in de maven-shade y genero el archivo JAR de tamaño gigante, ese archivo JAR no se puede copiar. Si desactivo el soporte de sombra y genero un JAR "normal", el archivo se comporta como esperaba. ¿Podría el archivo JAR más grande tener una cadena que haga que Trend Micro no permita la copia?
Matthew Markland

@MatthewMarkland Desactiva TrendM temporalmente y luego lo verás
klanomath

Respuestas:


1

Aunque esta es una respuesta insatisfactoria, la actualización a la última versión del plugin de maven-shade "solucionó" el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.