configuration - example - ¿Hay alguna manera de dividir artefactos entre prueba y compilación usando maven-dependency-plugin durante el objetivo copy-dependencies?
maven-dependency-plugin example (2)
Intenté excluir el alcance de la prueba al agregar la configuración de la prueba, pero aparece un error
Me tropecé con esto, probablemente por razones muy diferentes, pero creo que nos encontramos a ambos la respuesta. Prueba esto, por ejemplo. Necesitarás pom.xml en el directorio actual, por supuesto.
mvn dependency:copy-dependencies /
-DincludeScope=runtime /
-DexcludeScope=provided /
-DoutputDirectory=target/war/WEB-INF/lib
Muchísimas gracias tardías a Brian Fox, quien escribe sobre Maven Dependency Plugin Issue # 128 :
Nunca debería necesitar incluir o excluir dos ámbitos al mismo tiempo porque están compuestos el uno del otro. El valor predeterminado es incluir el alcance de la prueba, que incluye todo. Si no desea ninguna dependencia de prueba o dependencias proporcionadas, incluya el tiempo de ejecución y la exclusión proporcionadas.
Los ámbitos interpretados son los alcances tal como los ve Maven, no como se especifica en el pom. Entonces, el alcance de "prueba" incluye todo, el tiempo de ejecución incluye la compilación pero no se proporciona, etc.
En mayo de 2013, la documentación de includeScope se actualizó a:
/**
* Scope to include. An Empty string indicates all scopes (default).
* The scopes being interpreted are the scopes as
* Maven sees them, not as specified in the pom. In summary:
* <ul>
* <li><code>runtime</code> scope gives runtime and compile dependencies,</li>
* <li><code>compile</code> scope gives compile, provided, and system dependencies,</li>
* <li><code>test</code> (default) scope gives all dependencies,</li>
* <li><code>provided</code> scope just gives provided dependencies,</li>
* <li><code>system</code> scope just gives system dependencies.</li>
* </ul>
*
* @since 2.0
*/
@Parameter( property = "includeScope", defaultValue = "" )
protected String includeScope;
Tengo la siguiente configuración:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>analyze</id>
<goals>
<goal>analyze-only</goal>
</goals>
<configuration>
<failOnWarning>false</failOnWarning>
</configuration>
</execution>
<!--Copy the dependencies so ant build has the same versions-->
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/lib</outputDirectory>
<overWriteIfNewer>true</overWriteIfNewer>
<stripVersion>true</stripVersion>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<excludeTransitive>false</excludeTransitive>
</configuration>
</execution>
</executions>
</plugin>
La configuración anterior vuelca todo en la misma carpeta. Intenté excluir el alcance de la prueba al agregar la configuración de la prueba, pero aparece un error:
Error al ejecutar el objetivo org.apache.maven.plugins: maven-dependency-plugin: 2.6: copy-dependencies (copy-dependencies) en project pcgen: no se puede excluir el alcance de la prueba, esto excluirá todo.
¿Hay alguna manera de separar las dependencias de prueba del resto para poder copiar a diferentes carpetas?
use includeScope
hecho, el alcance de la prueba incluye todos los ámbitos, es por eso que falla.
<includeScope>runtime</includeScope>