java将源JAR(web应用程序的)包含在WAR文件的lib目录中
我们正在使用Cobertura为我们部署的web应用程序生成测试覆盖率。为了生成HTML报告,它需要在应用程序的类路径上找到源JAR
我们的Maven build生产:
target/our-webapp-sources.jar (about 40k)
target/our-webapp.war (about 20MB)
在Tomcat中部署时,我们有(在WEB-INF
下)
classes/... (the .class files) ...
lib/our-service-library.jar
lib/our-service-library-sources.jar
lib/our-core-library.jar
lib/our-core-library-sources.jar
因此,我们能够插入指令,但只显示已分析的Service
和Core
项目的源文件。我们想要的是我们的-sources
JAR,以便将webapp本身部署为lib
目录下的依赖项。所以我们想要:
classes/... (the .class files) ...
lib/our-webapp-sources.jar
lib/our-service-library.jar
lib/our-service-library-sources.jar
...
我们可以手动指定(对Cobertura命令行脚本)一个目录来查找源文件(认为我们可以单独给它一个sources JAR),但这样做会覆盖其他源文件。因此,我们可以获得包含的web服务源,但是当我们这样做时,我们会丢失Core
和Service
的源文件
我们使用的是Maven概要文件——因此这只是一个特定于工具的部署,但我们希望调整maven-war-plugin
或类似的配置,将-sources
JAR包含在webapp本身的lib
文件夹中
# 1 楼答案
首先,您必须将
war
项目描述符配置为包含web应用程序的源jar,它可以简单地如下所示:这里的相关部分是
<webResources>
元素,它指示maven将其他资源包括到您的存档中,具体取决于:directory
包括要添加的存档,它应该是您的构建目录,因为构建*-sources.jar
文件将放在那里李>includes
元素,指定要包含的工件,即sources jar,假设它不是别的,而是附加了sources后缀的web归档文件名(默认名称模式)李>war
存档中定义目标的{要使用前面提到的配置复制源jar文件,必须告诉maven生成项目源,默认情况下不会这样做
这可以通过使用maven sources插件无缝完成,使用一个必要的技巧,比如准备包阶段,否则您将无法将这些来源包括在war文件中。下面是附加的maven源插件配置,应该附加到上面的pom。xml描述符:
Here您可以找到一个工作示例,从中可以复制/使用项目描述符配置