我有一个web maven项目。项目的输出是一个war
文件。我想将这个war
文件作为依赖项添加到project_b中。
project_b的pom.xml
文件有一个插件,如下所示:
...
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<warName>geoserver</warName>
<webappDirectory>${project.build.directory}/geoserver</webappDirectory>
<packagingExcludes>WEB-INF/lib/servlet-api*.jar</packagingExcludes>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<GeoServerModule>core</GeoServerModule>
<Application-Name>${project.build.finalname}</Application-Name>
<Project-Version>${project.version}</Project-Version>
<Iteration-Name>${iteration}</Iteration-Name>
<Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
<Git-Revision>${build.commit.id}</Git-Revision>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
...
如何使用<groupId>org.itsme</groupId>
、<artifactId>spring3-mvc-maven-xml-hello-world</artifactId>
、<packaging>war</packaging>
和<version>1.0-SNAPSHOT</version>
将web应用程序的war
添加到project_b
发布于 2015-07-04 20:17:33
在Maven中,添加依赖项只是小菜一碟。请看下面的pom.xml。
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<!-- Project Details -->
<groupId>ykyuen</groupId>
<artifactId>project-apple</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>project-apple</name>
<dependencies>
<!-- project-apple depends on project-banana -->
<dependency>
<groupId>ykyuen</groupId>
<artifactId>project-banana</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</project>
设置上述依赖关系与导入project-apple中的project-banana.jar相同。
现在我有了另一个名为project-orange的Maven web应用程序项目,它的打包类型等于war。添加上述依赖链接根本不起作用,因为Java不会将.war文件视为类路径。
要解决这个问题,有两种方法:
。
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<attachClasses>true</attachClasses>
<classesClassifier>classes</classesClassifier>
</configuration>
</plugin>
</plugins>
</build>
...
运行mvn install后,您可以在目标文件夹中找到以下归档文件
现在您可以编辑project-apple的pom.xml来添加新的依赖项。
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>4.0.0</modelVersion>
<!-- Project Details -->
<groupId>ykyuen</groupId>
<artifactId>project-apple</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<name>project-apple</name>
<dependencies>
<!-- project-apple depends on project-banana -->
<dependency>
<groupId>ykyuen</groupId>
<artifactId>project-banana</artifactId>
<version>1.0</version>
</dependency>
<!-- project-apple depends on project-orange -->
<dependency>
<groupId>ykyuen</groupId>
<artifactId>project-orange</artifactId>
<version>1.0</version>
<!-- To map the project-orange-classes.jar -->
<classifier>classes</classifier>
</dependency>
</dependencies>
</project>
参考:http://eureka.ykyuen.info/2009/10/30/maven-dependency-on-jarwar-package/
发布于 2016-09-20 22:32:42
最近,我也面临着同样的问题。这就是我非常简单地解决这个问题的方法。
步骤1:在原始项目(不依赖于任何项目)的pom中的配置maven war插件,使其能够构建war和jar。当我们进行mvn全新安装时,jar将被上传到maven存储库中。
我的pom的第一部分是这样的:
<modelVersion>4.0.0</modelVersion>
<groupId>com.pancharatna</groupId>
<artifactId>TestWebApp</artifactId>
**<packaging>jar</packaging>**
<version>1.0-SNAPSHOT</version>
接下来,在build部分添加另一个插件:
<build>
<finalName>TestWebApp</finalName>
<plugins>
**<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>make-a-war</id>
<phase>compile</phase>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>**
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
第二步:在第二个项目(依赖于第一个项目)中,将依赖jar(原始项目)放入pom中。
<dependency>
<groupId>com.pancharatna</groupId>
<artifactId>TestWebApp</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
第3步:对项目执行mvn全新安装,然后对第二个项目执行
步骤4:可选:我们可以创建一个父pom,而不是像步骤3中提到的那样顺序和单独地构建项目。我们可以简单地运行mvn全新安装:
C:/Test/
├───Project1
│ └───src/main/...
│ └───pom.xml
│
├───Project2
│ └───src/main/...
│ └───pom.xml
│
├───pom.xml <!-- parent pom -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.MyApp</groupId>
<artifactId>myproject</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>myproject</name>
<url>http://maven.apache.org</url>
</dependencies>
<modules>
<module>/Project1</module>
<module>/Project2</module>
</modules>
</project>
https://stackoverflow.com/questions/31020038
复制相似问题