我正在尝试对现有项目进行专业化。我能够构建EAR文件(因为我必须在Websphere中部署),当我尝试部署时,使用管理控制台-能够成功安装,但应用程序不工作,经过调查,我发现class files
的大小与参考EAR文件(旧的现有EAR文件)相比非常小
我按照步骤构建EAR文件
- 已安装M2E插件
- 配置为Maven
- 添加ALL
lib
文件夹中的jar文件,如下所示(我在SO中阅读过,这不是推荐的方式,但要完成项目,我必须这样做)
<dependency>
<groupId>JarFile</groupId>
<artifactId>JarFile</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/WebContent/WEB-INF/lib/CRDBXMLExternal.jar</systemPath>
</dependency>
- 添加了相关插件
(war, EAR)
- 清理生成和安装
- 创建了
ear
文件。ear
包含一个war
文件,该文件包含所有与项目相关的文件,包括class
、jsp
等
我将文件夹结构与现有的EAR文件及其内容进行了比较,所有这些看起来都很好。但只有类文件的大小(不是全部,而是超过80%)是不同的。我使用JD到decompile
并看到代码,大多数代码都不存在,包括imports
。
如果有人遇到过类似的问题,你能告诉我这里做错了什么吗。
更多信息
有两个项目文件夹(都是maven),一个将创建WAR,另一个将在EAR pom.xml中创建EAR存在依赖
<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:COMPDevmayrepos .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>
上面并没有告诉Maven使用lib
目录依赖项来打包EAR文件。它实际上告诉它对一个只在编译时提供的现有JAR创建本地依赖关系。因此,当导出EAR时,它不包括任何JAR,因为它假设它们是在运行时提供的。
您应该使用maven ear插件来封装ear文件。你可以在这里找到完整的文档。
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>3.0.1</version>
</plugin>
问题是,web/WebContent/WEB-INF/classes
未更新。但我可以在CCD_ 14路径下看到最新的CCD_。现在我正在检查web/WebContent/WEB-INF/classes
没有更新的原因。
刚才从下面的链接得到了决议:-问题由在的帮助下解决https://coderanch.com/t/474423/ide/ecplise-doesn-create-classes-folder
步骤
右键单击项目->构建路径->配置构建路径->单击源选项卡->单击浏览(默认输出文件夹)。
浏览后,点击WebContent->选择WEB-INF->创建新文件夹(称为类)。它将打开新窗口。
将文件夹名称指定为类。单击Advanced并给出当前类的路径文件夹意味着WEB-INF/classes。
完成此操作后,eclispe将重建您的项目,类将在WEB-INF/classes目录中生成。