¿Cómo se suprime el reemplazo de propiedad al crear un proyecto a partir de un arquetipo?

StackOverflow https://stackoverflow.com/questions/1878742

  •  18-09-2019
  •  | 
  •  

Pregunta

Estoy intentando crear un arquetipo para un proyecto simple, este proyecto contiene algunos certificados SSL que me gustaría incluye como recursos en el arquetipo de modo que cuando el proyecto se crea esos CERT será parte del proyecto. Mi problema es que Maven está tratando de hacer un reemplazo de la propiedad sobre los certs al crear un proyecto con el arquetipo. ¿Hay alguna forma de decir experta en no hacer el reemplazo de la propiedad? Ya he intentado lo siguiente:

    <resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <includes>
      <include>**/*.xml</include>
    </includes>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>false</filtering>
    <excludes>
      <exclude>**/*.xml</exclude>
    </excludes>
  </resource>

en mi prototipo pom.xml. ¿Alguna idea?

¿Fue útil?

Solución

No estoy seguro de cuál es tu problema exactamente es (son sus certificados de archivos XML ??) pero mi conjetura es que se relaciona con el hecho de que la mayor parte del contenido no binaria de un arquetipo es procesada por la velocidad durante la creación (ver ARCHETYPE-90 sobre este problema).

Una solución consiste en configurar el crear mojo -desde-proyecto tenga archivo sin filtrar de forma predeterminada usando:

-Darchetype.filteredExtentions=ext1,ext2,...

En él se establecen las extensiones de los archivos que serán filtrados y el valor por defecto incluyen java, xml, txt, vm, groovy, jsp, gsp, vm y properties. Así excluir xml de esta lista si no desea xml a filtrar.

Otra opción sería especificar los metadatos personalizados para su arquetipo, algo como esto en src/main/resources/META-INF/maven/archetype-metadata.xml:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="myarchetype">
  <fileSets>
    <fileSet filtered="false" encoding="UTF-8">
      <directory>src/foobar</directory>
      <includes>
        <include>**/*.xml</include>
      </includes>
    </fileSet>
  </fileSets>
</archetype-descriptor>

esta página para más detalles sobre los metadatos arquetipo.

Otros consejos

Yo tenía un problema similar tratando de utilizar $ {} basedir en arquetipo-recursos / pom.xml pero estaba siendo reemplazado cuando el arquetipo corrió para crear el proyecto y así señaló en el directorio incorrecto.

La solución es simple. Sólo tiene que utilizar \ $ {} basedir lugar. Esto escapa el signo $ y evita la experta de su sustitución cuando se ejecuta el arquetipo. A continuación, el archivo pom.xml generada contendrá $ {} basedir en lugar del directorio que el arquetipo se desarrolló entre.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top