Como você suprimir a substituição de propriedade ao criar um projeto a partir de um arquétipo?
-
18-09-2019 - |
Pergunta
Eu estou tentando criar um arquétipo para um projeto simples, este projeto contém alguns certificados SSL que eu gostaria de inclui como recursos no arquétipo por isso, quando o projeto é criado esses certificados serão parte do projeto. Meu problema é que o perito está tentando fazer uma substituição de propriedade sobre esses certificados ao criar um projeto com o arquétipo. Existe uma maneira de contar maven não fazer a substituição propriedade? Eu já tentei o seguinte:
<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>
no meu protótipo pom.xml. Alguma idéia?
Solução
Eu não tenho certeza qual é seu problema exatamente é (são os seus arquivos xml certificados ??) mas meu palpite é que ela está relacionada ao fato de que a maioria dos conteúdos não binário de um arquétipo é processado pela velocidade durante a criação (ver ARQUÉTIPO-90 sobre este problema).
A solução é configurar o criar -do-projeto mojo ter arquivo não filtrada por padrão usando:
-Darchetype.filteredExtentions=ext1,ext2,...
Ele define as extensões de arquivos que serão filtrados e o valor padrão incluem java
, xml
, txt
, vm
, groovy
, jsp
, gsp
, vm
e properties
. Então excluir xml
nesta lista se você não quer xml
a ser filtrado.
Outra opção seria para especificar metadados personalizados para o seu arquétipo, algo como isto em 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>
desta página para obter mais detalhes sobre metadados arquétipo.
Outras dicas
Eu tive um problema semelhante tentando usar $ {basedir} no arquétipo de recursos / pom.xml mas foi sendo substituído quando o correu arquétipo para criar o projeto e assim apontou para o diretório errado.
A correção é simples. uso apenas \ $ {basedir} em vez disso. Este escapa o sinal $ e evita Maven substituí-lo quando o arquétipo é executado. Em seguida, o arquivo pom.xml gerado conterá $ {basedir} em vez do diretório que o correu arquétipo de.