Tengo algunas clases relacionadas con la prueba que quiero excluir de la salida jar compilada para un proyecto. Este es un proyecto heredado y no quiero perder el historial de revisión existente moviendo las clases a src/test. Como ya estoy usando build-helper-maven-plugin, pensé que podría especificar un patrón de exclusión allí, pero hasta ahora nada de lo que he intentado parece funcionar. Corro
paquete de instalación limpia mvn
en la raíz de mi proyecto y veo el mensaje de registro
[INFO] --- build-helper-maven-plugin:3.0.0:add-source (add-source) @ Person-ejb --- [INFO] Directorio fuente: /media/psf/Home/Documents/workspace/ Se agregó optics/optics/Person/ejb/src.
pero cuando miro el jar compilado, todavía contiene el directorio de prueba y su contenido. ¿Alguna idea de lo que podría estar haciendo mal?
Mi pom.xml:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>src/</source> </sources> <excludes> <exclude>**/test/**</exclude> </excludes> </configuration> </execution> <execution> <id>add-reource</id> <phase>generate-resources</phase> <goals> <goal>add-resource</goal> </goals> <configuration> <resources> <resource> <directory>resources/</directory> </resource> </resources> </configuration> </execution> </executions> </plugin> Creo que se trata de un error en build-helper-maven-plugin o posiblemente un error tipográfico en la documentación de uso. El complemento ignora por completo la etiqueta <excludes> .
Ni siquiera aparece en la finalización del código en Eclipse.
Si bien no puede excluir archivos en builder-helper-maven-plugin, puede excluir archivos en maven-compiler-plugin . Entonces, si simplemente agrega la siguiente configuración a su maven-compiler-plugin , debería excluir los directorios **/test/**
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <release>11</release> <excludes> <exclude>**/test/**</exclude> </excludes> </configuration> </plugin>Me siento obligado a recordarle al lector que este es un antipatrón en maven. Idealmente, crearía archivos pom separados para cada directorio de origen y luego los agregaría como módulos separados en su archivo pom principal. Aunque me doy cuenta de que esto puede ser un esfuerzo de refactorización más grande