当 war 使用 maven-jetty-plugin 运行时,覆盖在类路径上重复
Overlays are duplicated on classpath when war runs with maven-jetty-plugin
在我的项目中,我使用 war 叠加层。在 src/main/resources 的一垒 war 中,我有文件 my-file.txt
。第二个 war 取决于第一个 war。
第二个 war 有一个在类路径上查找 my-file.txt
的代码:
Enumeration<URL> urls = MyListener.class.getClassLoader().getResources("my-file.txt");
while (urls.hasMoreElements()) {
System.out.println("This is my resource:" + urls.nextElement());
}
我的输出是 (mvn jetty:run
):
This is my resource:jar:file:/C:/Users/michaldo/.m2/repository/war-plus-war/war1/0.0.1-SNAPSHOT/war1-0.0.1-SNAPSHOT-classes.jar!/my-file.txt
This is my resource:jar:file:/C:/Users/michaldo/workspace-n1/war-plus-war/war2/target/tmp/war1-0_0_1-SNAPSHOT_war1/WEB-INF/lib/war1-0.0.1-SNAPSHOT.jar!/my-file.txt
我可以配置 maven jetty 插件并避免重复吗?
我的maven-war-plugin配置(jetty有默认配置):
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<archiveClasses>true</archiveClasses>
<attachClasses>true</attachClasses>
<dependentWarExcludes>
WEB-INF/lib/*-*.jar
</dependentWarExcludes>
</configuration>
</plugin>
问题是 dependentWarExcludes
已被弃用(甚至不支持 maven-war-plugin 3.0
当我将排除移动到覆盖配置时,Maven Jetty 插件按预期工作:
<build><plugins><plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
<overlay>
<groupId>war-plus-war</groupId>
<artifactId>war1</artifactId>
<excludes><exclude>
WEB-INF/lib/*-*.jar
</exclude></excludes>
</overlay>
</overlays>
</configuration>
</plugin></plugins></build>
在我的项目中,我使用 war 叠加层。在 src/main/resources 的一垒 war 中,我有文件 my-file.txt
。第二个 war 取决于第一个 war。
第二个 war 有一个在类路径上查找 my-file.txt
的代码:
Enumeration<URL> urls = MyListener.class.getClassLoader().getResources("my-file.txt");
while (urls.hasMoreElements()) {
System.out.println("This is my resource:" + urls.nextElement());
}
我的输出是 (mvn jetty:run
):
This is my resource:jar:file:/C:/Users/michaldo/.m2/repository/war-plus-war/war1/0.0.1-SNAPSHOT/war1-0.0.1-SNAPSHOT-classes.jar!/my-file.txt
This is my resource:jar:file:/C:/Users/michaldo/workspace-n1/war-plus-war/war2/target/tmp/war1-0_0_1-SNAPSHOT_war1/WEB-INF/lib/war1-0.0.1-SNAPSHOT.jar!/my-file.txt
我可以配置 maven jetty 插件并避免重复吗?
我的maven-war-plugin配置(jetty有默认配置):
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<archiveClasses>true</archiveClasses>
<attachClasses>true</attachClasses>
<dependentWarExcludes>
WEB-INF/lib/*-*.jar
</dependentWarExcludes>
</configuration>
</plugin>
问题是 dependentWarExcludes
已被弃用(甚至不支持 maven-war-plugin 3.0
当我将排除移动到覆盖配置时,Maven Jetty 插件按预期工作:
<build><plugins><plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<overlays>
<overlay>
<groupId>war-plus-war</groupId>
<artifactId>war1</artifactId>
<excludes><exclude>
WEB-INF/lib/*-*.jar
</exclude></excludes>
</overlay>
</overlays>
</configuration>
</plugin></plugins></build>