包装及;不使用ANT部署JavaEEWebApp
我们将为我们的客户开发一个用JavaEE技术编码的大型webapp。我的客户端不支持ANT和Eclipse,它们是服务器中的OSS 因此,我们的要求是在本地系统中编码和开发应用程序并对其进行测试,然后我们需要在客户机服务器中提供源代码,在那里我们将运行一个部署脚本,该脚本将从源文件编译所需的java文件,并将.class文件和其他资源文件部署到该服务器上运行的Tomcat(HP-UX) 是否可以只使用javac、jar或JAVA_HOME/bin中可用的其他命令来部署应用程序而不使用ANT脚本?如果有任何这样的实施,你能指导我们吗?我想知道在ANT开发之前,JAVA开发人员是如何部署大型应用程序的。我知道MAKE命令(在我们的服务器中可用)不适合java应用程序 注意:我们将拥有复杂的包层次结构(最多4个级别)包装及;不使用ANT部署JavaEEWebApp,java,jakarta-ee,ant,Java,Jakarta Ee,Ant,我们将为我们的客户开发一个用JavaEE技术编码的大型webapp。我的客户端不支持ANT和Eclipse,它们是服务器中的OSS 因此,我们的要求是在本地系统中编码和开发应用程序并对其进行测试,然后我们需要在客户机服务器中提供源代码,在那里我们将运行一个部署脚本,该脚本将从源文件编译所需的java文件,并将.class文件和其他资源文件部署到该服务器上运行的Tomcat(HP-UX) 是否可以只使用javac、jar或JAVA_HOME/bin中可用的其他命令来部署应用程序而不使用ANT脚本?
更新:看来我没有一个直截了当的答案。我想说服我们的客户使用ANT。如果没有,我将根据下面的评论为我的客户开发一个跨平台定制构建工具。。。谢谢各位。。如果我们知道打包和部署的正确步骤,我不认为构建这种类型的工具不是那么困难…我认为整个设置非常奇怪,但无论如何 war文件非常简单。它是一个具有给定目录结构的ZIP文件。您可以使用一个shell脚本轻松创建它,该脚本首先运行
javac
来编译源代码,然后将文件复制到正确的目录,最后将其打包到扩展名为.war的ZIP文件中
您可以在网上找到.war文件的规范。或者,您可以在您的环境中构建一个,使用ZIP工具打开它,并查看哪些文件需要放在哪里
更新:如果您的应用程序很大,则可以将其拆分为模块。每个模块将被编译并打包成一个单独的.jar文件(基本上也是一个ZIP文件)。如果一个模块依赖于另一个模块,那么只需将所需的.jar文件作为类路径参数传递给编译器。如果您确实必须接受客户机的要求,那么我可能会这样做 为了避免修改您添加的每个文件的依赖关系,我将介绍一种将源代码、jar文件和输出文件放在何处的约定。然后,我将创建一个带有一些设置的脚本:
找出哪些shell是客户可以接受的,这样您就不会使用任何特定于shell的功能。我认为您不需要任何花哨的东西,所以这应该不会太难。为什么需要在客户机服务器上构建它?交付战争或ear文件不是更自然吗?是的,我们可以这样做。但客户端只需要源文件。比如说,我们提供了源代码和.war文件。但在未来,如果他们想自己维护应用程序,他们就不能,因为他们不允许在开发人员的系统中安装诸如ANT、ECLIPSE之类的OSS……你可以在python、ruby rake、perl或至少shell脚本上编写脚本——只要对客户机说不就行了。甚至HP-UXJava本身也基于开源OpenJDK。他们的要求是疯狂的。诸如Ant之类的构建工具在运行时不存在,也不随war文件一起分发,因此没有理由禁止它们。想象一下,即使是Linux本身作为开发/部署平台也会被您的客户拒绝,这听起来像是客户不合理的要求。没有什么可以阻止您使用构建的二进制文件提供源代码,但是强制您作为契约的一部分构建自定义构建工具是不合理的,这表明客户端缺乏Java知识。ANT是一个标准的构建工具,因为他们来了。。。我几乎可以理解对Maven的反对…谢谢你的回答。我在小型应用程序中也做了同样的工作,我对每个包分别使用javac命令,然后使用jar命令进行打包。但是我们的代码被放入更多的包中。。。JAVA文件依赖于其他包中的其他JAVA文件(超类)。因此,在这种情况下,单个javac命令不会从src/folder编译整个源代码。而且,随着时间的推移,一个新的包可以被包括进来…(必须是可伸缩的)。@Venkatesh:你也可以使用.jar文件。见我的更新上面。谢谢你的更新。但情况是这样的。PACKAGE1中的JAVA1文件是PACKAGE2中JAVA2文件的子类。PACKAGE2中的JAVA3文件是PACKAGE1中JAVA4文件的子类。在这种情况下,必须首先编译哪个包?它们需要同时编译,并且不能进入单独的.jar文件。这适用于您使用的任何开发环境。您可以在python、ruby rake、perl或至少shell脚本上编写脚本。我想根据上述准则为客户机实现一个定制的构建工具。我们仍然说服客户使用ANT。