Как добавить файл war в другие зависимости веб-приложений java?
у меня есть проект web maven. Выход проекта -. Я хочу добавить это 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>
...
как добавить war
веб-приложения для project_b с <groupId>org.itsme</groupId>
, <artifactId>spring3-mvc-maven-xml-hello-world</artifactId>
, <packaging>war</packaging>
и <version>1.0-SNAPSHOT</version>
?
2 ответов
в Maven добавление зависимости-это просто кусок пирога. Взгляните на следующий пом.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-banana.банка в проекте-apple.
Теперь у меня есть еще один проект веб-приложения Maven под названием project-orange с типом упаковки, равным war. Добавление вышеуказанной связи зависимостей не работает вообще, так как Java не видит .war-файл в classpath приложения.
чтобы решить проблема, есть два подхода:
создайте модуль Maven, который содержит классы project-orange с упаковкой jar. Теперь вы можете рассматривать новый модуль Maven как обычную зависимость.
настройте Maven-war-plugin так, чтобы он построил.jar-файл при построении .War-файл. Добавьте следующий код под узлом вашего проекта 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 вы можете найти следующие архивные файлы в целевой папке
- .война!--17-->
.Джар
Теперь вы можете редактировать pom.xml проекта-apple для добавления новой зависимости.
<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/
недавно я также столкнулся с той же проблемой. Вот как я решил это очень просто.
Шаг 1: в pom оригинального проекта(не зависит от какого-либо проекта)настройте плагин Maven war таким образом, что он будет строить войну, а также jar. Банка будет загружена в репозиторий maven, когда мы сделаем mvn clean install.
моя первая часть пом выглядела так:
<modelVersion>4.0.0</modelVersion>
<groupId>com.pancharatna</groupId>
<artifactId>TestWebApp</artifactId>
**<packaging>jar</packaging>**
<version>1.0-SNAPSHOT</version>
Далее, добавьте еще один плагин в раздел сборки:
<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>
Шаг 2: во 2-м проекте(который зависит от первого проекта) поместите банку зависимостей (исходный проект)в pom.
<dependency>
<groupId>com.pancharatna</groupId>
<artifactId>TestWebApp</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
Шаг 3: сделать mvn чистой установки для проекта, а затем для второго проекта
Шаг 4: необязательно: вместо того, чтобы строить проекты последовательно и отдельно, как указано в шаге 3, мы можем создать родительский pom. Мы можем просто убежать. 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>