我有一個Maven Web應用程序正在使用我創建的jar並在我的pom文件中被引用爲依賴項。如何在Maven項目中公開依賴項的依賴關係
我創建的jar文件有另一個jar文件作爲依賴項。
當我部署Web應用程序時,它說我無法找到我創建的jar文件的依賴項中的類。
解決此問題的唯一方法是添加jar文件的依賴項作爲war文件的依賴項。這似乎沒有必要。
有沒有一種方法可以配置war文件,以便能夠查看依賴於相關jar文件中定義的類?
我的jar pom文件看起來像:具有無法找到的類的依賴關係是QRS之一。
<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>group</groupId>
<artifactId>artifact</artifactId>
<packaging>jar</packaging>
<version>1.0.7</version>
<name>name</name>
<dependencies>
<dependency>
<groupId>group2</groupId>
<artifactId>QRS</artifactId>
<version>8.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
我的戰爭POM樣子:
<dependency>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<version>1.0.7</version>
</dependency>
,並配置了戰爭插頭:
<plugin>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<warName>${project.name}-${project.version}-${env}</warName>
<webResources>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
<include>jboss-web.xml</include>
<include>web.xml</include>
<targetPath>/WEB-INF</targetPath>
</resource>
</webResources>
<warSourceExcludes>**/toAggregateAndRemove/**</warSourceExcludes>
<goal>war:manifest</goal>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
另一個jar是一個擁有自己的pom的maven項目,並被拉入我的本地倉庫,並被列爲戰爭文件的依賴項,並列出了傳遞依賴項作爲依賴項。 war文件只是將jar文件列爲依賴關係,而不是傳遞依賴關係。 – Eric
@Eric您如何部署?除非你告訴它,否則Maven不會奇蹟般地創建一個與所有其他類(除你自己之外)的超級罐子。您也可以使用Maven將項目依賴項複製到一個目錄中,例如將它們包含在一個tar文件中。否則,編譯時間依賴就是這樣 - 編譯時間依賴。 –
我正在向jboss部署一個war文件。 我有maven複製jar文件的相關性到實際的jar文件。 當我在Web項目中查看jar文件時,我看到所有依賴的jar文件,包括缺少類的jar文件。 它編譯得很好,它只是不會部署,因爲春天試圖instanciate豆和不能,因爲它無法找到類的依賴依賴 – Eric