当前位置: 首页 > 知识库问答 >
问题:

Maven构建类文件的大小减小了

沙小白
2023-03-14

我正在努力使一个现有的项目变得更加专业化。我能够构建EAR文件(因为我必须在Websphere中部署),当我尝试部署时,使用管理控制台-能够成功安装,但应用程序不工作,在调查后,我发现类文件的大小与参考EAR文件(旧的现有EAR文件)相比非常小

构建EAR文件所遵循的步骤

  1. 已安装M2E插件
<dependency>
<groupId>JarFile</groupId>
<artifactId>JarFile</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/WebContent/WEB-INF/lib/CRDBXMLExternal.jar</systemPath>
</dependency>

我将文件夹结构与现有的EAR文件及其内容进行了比较,看起来都不错。但只有类文件的大小(不是全部,而是超过80%)是不同的。我使用JD进行编译并查看代码,大部分代码都不存在,包括导入

如果有人遇到过类似的问题,你能告诉我我在这里做错了什么吗。

更多信息

有两个项目文件夹(都是maven),一个将创建WAR,另一个是EAR-in-EAR pom。xml有一个依赖关系

<dependency>
		<groupId>com.comp.abc</groupId>
		<artifactId>abc</artifactId>
		<version>1.0</version>
		<type>war</type>
	</dependency>

还有一个插件

<build>
    <plugins>
		<plugin>
			<artifactId>maven-ear-plugin</artifactId>
			<version>2.10</version>
			<configuration>
				<version>5</version>
				<defaultLibBundleDir>lib</defaultLibBundleDir>
				<generatedDescriptorLocation>C:\COMP\Dev\may\repos\0.0.1-SNAPSHOT</generatedDescriptorLocation>
			</configuration>
		</plugin>      
    </plugins>
  </build>

添加WAR文件构建(删除了大多数依赖项,只保留了一个示例)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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.comp.abc</groupId>
	<artifactId>abc</artifactId>
	<version>1.0</version>
	<packaging>war</packaging>
	<name>ABC</name>
	<description>ABC</description>

	<dependencies>
		<!-- Local Repository -->
		<dependency>
			<groupId>com.ibm.ws.runtime</groupId>
			<artifactId>com.ibm.ws.runtime</artifactId>
			<version>1.0</version>
			<scope>system</scope>
			<systemPath>${basedir}/WebContent/WEB-INF/lib/com.ibm.ws.runtime.jar</systemPath>
		</dependency>
	</dependencies>



	<repositories>
		<repository>
			<id>nexus-releases</id>
			<name>nexus</name>
			<url>http://abc-nexus.ldn.xyz.com:9080/nexus/content/groups/public/</url>
		</repository>
	</repositories>

	<build>
		<sourceDirectory>src</sourceDirectory>
		<resources>
			<resource>
				<directory>src</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
		</resources>
		<plugins>			
			<plugin>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.3</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.6</version>
				<configuration>
					<!-- <warSourceDirectory>${project.basedir}\WebContent</warSourceDirectory> -->
					<warSourceDirectory>WebContent</warSourceDirectory>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

共有2个答案

慕容安易
2023-03-14

问题是,web/WebContent/WEB-INF/class没有更新。但我可以在web/目标/类路径下看到最新的。现在正在检查为什么web/WebContent/WEB-INF/class没有更新。

刚才从下面的链接中得到了解决方案:-问题由在的帮助下解决https://coderanch.com/t/474423/ide/ecplise-doesn-create-classes-folder

台阶

右键点击你的项目-

浏览后点击WebContent-

将文件夹名称指定为类。点击Advanced并给出当前类文件夹的路径意味着WEB-INF/classes。

完成此操作后,eclispe将重建您的项目,并在WEB-INF/classes目录中生成类。

袁开宇
2023-03-14

上面并没有告诉Maven用lib目录依赖项打包EAR文件。它实际上告诉它在一个只在编译时提供的现有JAR上创建本地依赖关系。因此,当导出EAR时,它不包括任何JAR,因为它假定它们是在运行时提供的。

你应该使用maven-ear-plugin哪个包一个EAR文件代替。你可以在这里找到完整的留档。

  <plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <version>3.0.1</version>
  </plugin>
 类似资料:
  • 如何减少Maven可执行Jar文件大小。目前为255 MB。它不允许在Cloudform中部署。 我正在通过云信息进行部署 - 如果我能将文件从255 MB减少,那么我的问题就解决了。 我从JAR文件中看到,下面2个依赖项占用了195 MB。 我应该怎样减少它? 完整的Pom XML文件是- 砰.xml - 4 . 0 . 0 org . spring framework . boot sprin

  • 问题内容: 有什么办法可以减少jar文件的大小? 我想要一个减少未使用依赖性的工具。 我使用Maven进行依赖管理。 问题答案: 从Maven的角度来看,JAR文件通常不包含依赖项。因此,您必须在谈论: WAR或EAR或类似文件, 通过合并大量JAR文件而产生的所谓的UberJAR文件;例如使用Maven阴影插件,或 依赖比Maven模块更精细。 在前两种情况下,可以通过在依赖关系规范或war或s

  • 问题内容: 我用Xcode 6.1和Swift制作了一个非常简单的iPhone应用程序。我对ios开发真的很陌生,遇到了一个134 mb的应用程序!当然这是不可接受的。 我的所有屏幕尺寸的背景图像加起来总计20 mb。就是这样!我将这些图像存储在xcassets中,因为那是我猜的首选方式。 我认为该应用程序不应超过25 mbs。 我发现我的项目中有一些参考文献加倍。我删除了这些,但我的.app文件

  • 我想减少一个胖springboot jar文件的占用空间。 这个问题的答案实际上涵盖了开发占用空间更小的spring boot应用程序的所有内容 2-有没有列出我必须排除的自动配置类,我可以去调试看看springboot是自动配置的什么,并拾取我不需要的,但是我正在寻找一些东西,比如一个脚本来检查代码,并给我一个我必须排除的自动配置类的列表。 Gradle用于依赖关系管理。

  • 问题内容: 我已经为Java项目开发了一个模块。该模块取决于外部库()。问题是,该文件比整个项目本身(14 MB)大两倍。我仅使用库中类的一小部分。该模块现已完成,将来没有人会对其进行扩展。有没有一种方法可以将相关类仅提取给某些类,以便其他人不必下载所有这些额外的内容? 问题答案: ProGuard之类的混淆工具通常提供从jar文件中删除未使用的类(甚至字段和方法)的功能。但是,您必须小心确认所有

  • 问题内容: 我正在使用appengine-maven-plugin构建我的Java Google App Engine项目。 我在WEB-INF子文件夹中包含.p12证书 当我构建应用程序时,证书的文件大小增加了几KB。这使其无效。我也看到过同样的情况。jks证书。 我已经验证了证书预构建的有效性,并使用相同的方法来确认构建后证书的有效性。 谁能告诉我为什么文件大小在变化,为什么不将其简单地复制到