2011-11-02 33 views
15

¿Alguien sabe cómo puedo hacer que los recursos como .gitignore formen parte del proyecto resultante?El plugin de arquetipo de Maven no permite .resources en archetype-resources a través de

  1. crear arquetipo con el arquetipo de los recursos/.gitignore
  2. mvn instalar
  3. archatype mvn: generar
  4. resultante del proyecto no contiene .gitignore

PS. Estoy seguro de que no está allí.

+0

Todas las soluciones aquí solo solucionan la mitad del problema. Ellos obtienen el arquetipo construido, con el '.gitignore': ¿pero cómo se genera con el '.gitignore'? – flungo

Respuesta

9

agregar una entrada a fileSetsrc/main/resources/META-INF/maven/archetype-metadata.xml con una etiqueta de directorio vacío:

<fileSet> 
    <directory></directory> 
    <includes> 
    <include>.gitignore</include> 
    </includes> 
</fileSet> 

Esto copiará los archivos incluidos de src/main/resources/archetype-resources en el directorio raíz del proyecto.

9

Compruebe su versión de maven-resources-plugin iniciando la creación de Maven en depuración (con la opción -X). Si usa 2.7, there is a regression where .gitignore files are silently ignored.

En este caso, tendrá que utilizar explícitamente 2.6 en su pom.xml:

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <artifactId>maven-resources-plugin</artifactId> 
       <version>2.6</version> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 
0

alternativo para degradar maven-resources-plugin es hacer cumplir la versión plexus-utils que en realidad tiene una regresión:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.7</version> 
    <dependencies> 
     <!-- it's for fixing maven-resources-plugin 2.7 MRESOURCES-190 --> 
     <dependency> 
      <groupId>org.codehaus.plexus</groupId> 
      <artifactId>plexus-utils</artifactId> 
      <!-- this is last 2.x release --> 
      <version>2.1</version> 
     </dependency> 
    </dependencies> 
</plugin> 
+1

Preferiría la [solución] de vorburger (http://stackoverflow.com/a/37322323/859604) –

12

Esta solución para el próximo maven-resources-plugin v3.0.0 (aún no publicado en el momento de publicarlo, el actual es 2.7) de https://issues.apache.org/jira/browse/MRESOURCES-190 parece mejor que retener las actualizaciones de la versión:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <configuration> 
      <!-- Required so that .gitignore gets included in archetypes; see https://issues.apache.org/jira/browse/MRESOURCES-190 --> 
      <addDefaultExcludes>false</addDefaultExcludes> 
+1

Puedo confirmar que esto funciona usando el "addDefaultExcludes". Usar el arquetipo 2.4 y maven-resources-plugin v.3.0.1 todavía tiene el mismo problema. – max

+0

addDefaultExcludes funciona bien como se describe aquí. ¡Finalmente! –

0

el error sigue en el más nuevo maven-archetype-plugin 2.4 y maven-resources-plugin 3.0.1.

Aquí está la solución:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-archetype-plugin</artifactId> 
    <version>2.2</version> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
</plugin> 

y en tu generar pom.xml se debe añadir

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
</plugin> 
+0

La [solución] (http://stackoverflow.com/a/37322323/859604) de vburburger es mejor ya que no implica el uso de plugins anteriores. –

1

El fallo parece estar aún presente en la v3.0.1 experto-arquetipo-plugin . Para aquellos que no quieren degradar el maven-resource-plugin. Logré establecer una solución más o menos fea.

Primero cambia el nombre del arquetipo recursos/.gitignore a

__gitignore__ 

entonces dentro de la archetype-metadata.xml añadir

<requiredProperties> 
    <requiredProperty key="gitignore"> 
     <defaultValue>.gitignore</defaultValue> 
    </requiredProperty> 
</requiredProperties> 

<fileSets> 
    <fileSet> 
     <directory></directory> 
     <includes> 
      <include>__gitignore__</include> 
     </includes> 
    </fileSet> 
</fileSets> 

Cuando se genera el arquetipo de Maven Ahora copiar la primera __gitignore__ continuación, ve la __[file]__ sintaxis y lo reemplazará con el valor predeterminado ".gitignore"

Cuestiones relacionadas