是否可以过滤资源 - 每个资源都在单独的执行标记中?
我的目标是拥有2个war文件,每个文件都使用不同的过滤器文件过滤资源。
实际上这个解决方案不起作用 - 变量没有值,没有被触及
<jta-data-source>${ds-jta}</jta-data-source>
- 我必须在maven-war-plugin - 评论部分之外添加过滤器和资源标签。
我认为可以在执行配置中指定这个“过滤” - 如片段所示。
<build>
<!-- I dont want to add this here - I want to have it in execution
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<filters>
<filter>config/1.properties</filter>
</filters> -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>1</id>
<phase>package</phase>
<configuration>
<filters>
<filter>config/1.properties</filter>
</filters>
<classifier>-1</classifier>
<webappDirectory>${project.build.directory}/${project.build.finalName}-1</webappDirectory>
<webResources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
<goals>
<goal>war</goal>
</goals>
</execution>
<execution>
<id>2</id>
<phase>package</phase>
<configuration>
<filters>
<filter>config/2.properties</filter>
</filters>
<classifier>-2</classifier>
<webappDirectory>${project.build.directory}/${project.build.finalName}-2</webappDirectory>
<webResources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
有什么线索我错过了什么?
答案 0 :(得分:0)
由maven-war-plugin创建的.war看起来像:
├── myapp.war
│ ├── index.html │
│ ├── myapp.properties
│ ├── logback.xml
│ ├── META-INF
│ │ ├── persistence.xml
│ │
│ └── WEB-INF
│ ├── classes
│ │ ├── myapp.properties
│ │ ├── logback.xml
│ │ ├── META-INF
│ │ │ ├── persistence.xml
我想过滤persistence.xml中定义的标记<jta-data-source>${ds-server-jta}</jta-data-source>
中的'ds-server-jta'变量。 Maven-war-plugin仅过滤了位于META-INF中的persistence.xml。
关于maven-war-plugin用META-INF创建了这个.war并且只过滤了一个persistence.xml(WEB-INF / classes / META-INF / persistence.xml一个)我添加到插件配置如下:
<webResources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<targetPath>WEB-INF/classes</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</webResources>
这会明确告诉插件要过滤哪些资源,现在两个文件都会根据需要进行更改。
然而,我的应用程序服务器(Glassfish)没有使用META-INF中的Persistence.xml,但是maven-war-plugin仍然会创建它。服务器使用的是WEB-INF / classes / META-INF / persistence.xml。 现在我尝试不在我的.war中创建第一个未使用的appserver META-INF目录,但它只是一个小细节。