因历史原因,A工程webapp的工程被B工程的webapp所依懒,并且A的类做为公用类被B类所用
A工程的pom.xml----------------------------------------------------------
<artifactId>tuig-xxxx-common</artifactId>
<version>4.0.0-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<plugins>
<!-- war包管理 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!-- 将所有classes文件封装成jar包放到WEB-INF/lib目录下 -->
<archiveClasses>true</archiveClasses>
<!--其他工程依懒此JAR-->
<attachClasses>true</attachClasses>
</configuration>
</plugin>
</plugins>
</build>
此时target目录会输入一个war包,一个jar包tuig-xxxx-common-4.0.0-SNAPSHOT-classes.jar、tuig-xxxx-common-4.0.0-SNAPSHOT.war
B工程的pom.xml----------------------------------------------------------
<!--业务合并(war包依赖)-->
<dependency>
<groupId>com.tuig.xxxx</groupId>
<artifactId>tuig-xxxx-common</artifactId>
<version>4.0.0-SNAPSHOT</version>
<classifier>classes</classifier>
<!--只在编译时调用-->
<scope>provided</scope>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.tuig.xxxx</groupId>
<artifactId>tuig-xxxx-common</artifactId>
<version>4.0.0-SNAPSHOT</version>
<type>war</type>
</dependency>
附maven官网 fqa-----------------------------------------------------------------------
要启用对web.xml的过滤,您必须像下面这样配置WAR插件:
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <version>3.3.1</version>
- <configuration>
- <filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
- </configuration>
- </plugin>
示例可以在这里找到。
使用时,项目中依赖项工件的副本将在其文件名后附加分类器。这可用于区分重复的工件。
给它一个“提供”的范围。
使用dependentWarExclude和提供的作用域有什么区别?
relatedWarExclude用于叠加层中,以从组装的Web应用程序中排除依赖的WAR文件。
使用<webResources> / <exclude>参数来标识要排除的令牌。
有关更多信息,请参阅添加和过滤外部Web资源。
使用dependentWarExcludes参数来标识要排除的标记。
对于每个目标,您都可以使用插件站点中的文档。
如果您需要特定版本,请使用mvn site:site生成它,或使用:
- MVN帮助:形容- Dplugin =战争- Dfull =真- Dversion = <你的-插件-版-在这里>
如果您只是想将类和资源打包为WEB-INF / lib中的JAR 而不是WEB-INF / classes下的松散文件,请使用以下配置:
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <version>3.3.1</version>
- <configuration>
- <archiveClasses>true</archiveClasses>
- </configuration>
- </plugin>
如果您需要在另一个项目中重复使用此JAR,建议的方法是将类移动到构建JAR的单独模块中,然后从您的Web应用程序以及需要的任何其他项目中声明对该JAR的依赖它。
如果您不能将类移动到另一个项目,则可以使用以下配置器,通过分类器将Web应用程序中包含的类和资源作为“附加”工件部署:
- <project>
- ...
- <artifactId>mywebapp</artifactId>
- <version>1.0-SNAPSHOT</version>
- ...
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <version>3.3.1</version>
- <configuration>
- <attachClasses>true</attachClasses>
- </configuration>
- </plugin>
- </plugins>
- </build>
- ...
- </project>
这将导致部署两个工件:mywebapp-1.0-SNAPSHOT.war 和mywebapp-1.0-SNAPSHOT-classes.jar。