我实现了一个通用模块,它是一个战争包,比如common_module.war。我需要在另一个测试应用程序中使用此common_module.war。在我的本地eclipse中,当我将common_module.war包含为测试应用程序的依赖项时,我可以访问所有jsps&测试应用程序中的common_module.war的java类。到目前为止一切都很好。
现在的问题是为了将它部署在服务器上。我将common_module.war上传到我公司的artifactory文件夹。并在存储库路径中包含该路径。现在测试应用程序无法访问common_module.war的jsps。
我在这里做错了什么?
错误是 - 我在测试应用程序中包含了常用模块的jsp。在那里我可以看到没有找到红色标记错误jsp。
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test_group_id</groupId>
<artifactId>test_artifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>test</name>
<description>test</description>
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>my_company_name</id>
<url>path_to_my_company_artifactory</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>common_module_group_id</groupId>
<artifactId>common_module_artifact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
</dependencies>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<outputDirectory>${project.build.directory}/../package/dependencies/jbossews/webapps</outputDirectory>
<warSourceDirectory>/src/main/webapp</warSourceDirectory>
<webXml>src\main\webapp\WEB-INF\web.xml</webXml>
<attachClasses>true</attachClasses>
<classesClassifier>classes</classesClassifier>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</project>
答案 0 :(得分:0)
在我看来,您正在尝试实施web-fragment
。这是一个JAR文件(不是WAR文件),可以包含在Web应用程序的WEB-INF / lib目录中。它可能包含与WAR文件相同的组件,包括JSP;它的包装方式不同。
jar文件应包含META-INF/web-fragment.xml
文件,JSP应打包在META-INF/resources
目录中。 servlet容器将处理此目录中的JSP文件,就好像它们位于WAR文件的根目录中一样。 web-fragment.xml
本质上是普通web.xml文件的一个子集。
这是Servlet 3.0+功能。
请参阅Java Servlet规范3.0 / 3.1的§8.2和§10.5。
答案 1 :(得分:0)
战争叠加功能帮我解决了这个问题。现在工作正常。