Pergunta

Eu tenho um super pom definido em que eu especificar um diretório "recursos" para obter recursos. Em um dos meus projetos, meu pom estende esse super-pom, e eu gostaria de adicionar um recurso adicional. Eu tentei:

    <resources>
        <resource>
            <targetPath>/</targetPath>
            <directory>additionalDir</directory>                
        </resource>
    </resources>

Mas isso resulta em única additionalDir estar nos recursos e não inclui recursos do super pom. Existe uma maneira de estender os recursos do super pom?

Foi útil?

Solução

O comportamento que você descreveu é esperado.

Lembre-se que o seu super POM está herdando de Maven padrão POM e praticamente qualquer plug-in que você define no seu pom efetivamente substitui a configuração no POM padrão. Como exemplo, para permitir filtragem no recurso padrão, você tem que especificar o caminho no seu POM. Você pode fazer isso:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Não esta:

<resources>
  <resource>
    <filtering>true</filtering>
  </resource>
</resources>

O diretório padrão não borbulhar para você, mesmo que você tenha especificado-lo lá. Pode haver um MOJO especial para fazer isso por você, mas eu não poderia encontrar um.

Outras dicas

Veja build-auxiliar-maven-plugin página uso de.

Sim, o Maven substituições recursos do POM pai quando redefinindo nova seção de recursos.

No entanto, uma maneira simples de adicionar recursos é

  1. Remova a seção de recursos do seu POM
  2. Mostrar O POM eficaz
  3. Copie os recursos de seu POM eficaz em seu projeto
  4. Substitua caminhos absolutos com os relativos
  5. Adicione seus recursos adicionais

Eu sei que esta questão é muito velho agora, mas talvez alguém vai encontrar este útil:

Você pode facilmente fazer isso usando o plugin de recursos Maven.

Basicamente, o que ele faz por padrão (invocando os recursos: meta recursos) está movendo o conteúdo de todos os diretórios listados na seção de build / recursos usando o filtro declarou na ${project.build.outputDirectory} Se agora você deseja adicionar alguns recursos adicionais sem influenciar estas seções, você pode simplesmente mover os recursos lá mesmo. Um não, isso faz arrastar não média e deixá-la cair lá.

Os Maven Resources Pluginprovides um objetivo chamado resources:copy-resources que faz exatamente isso para você: arquivos de enfrentamento usando filtros de um lugar para outro, ou como diz o plug-in doc:

Você pode usar o mojo de cópia de recursos para copiar recursos que não estão no layout maven padrão ou não declarado no elemento build / recursos e anexá-lo a uma fase

A vantagem óbvia em comparação com o build-auxiliar, que é sugerido em outras soluções, é que, enquanto o build-auxiliar só é capaz de agir durante a fase generate-sources, os recursos plugin funciona em qualquer fase. (Apesar de que seria sábio para executá-lo antes da fase de embalagem)

Um exemplo completo de como usar isso é fornecido aqui , como parte dos plugins projetar página.

O que isto faz é lidar o conteúdo do diretório de recursos não listados "src/non-packaged-resources" em "${basedir}/target/extra-resources". Mas desde que o plugin jar (que cria o arquivo jar) basicamente cria um arquivo zip do diretório "${project.build.outputDirectory}", você pode querer colocá-lo lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top