Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包装及;不使用ANT部署JavaEEWebApp_Java_Jakarta Ee_Ant - Fatal编程技术网

包装及;不使用ANT部署JavaEEWebApp

包装及;不使用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脚本?

我们将为我们的客户开发一个用JavaEE技术编码的大型webapp。我的客户端不支持ANT和Eclipse,它们是服务器中的OSS

因此,我们的要求是在本地系统中编码和开发应用程序并对其进行测试,然后我们需要在客户机服务器中提供源代码,在那里我们将运行一个部署脚本,该脚本将从源文件编译所需的java文件,并将.class文件和其他资源文件部署到该服务器上运行的Tomcat(HP-UX)

是否可以只使用javac、jar或JAVA_HOME/bin中可用的其他命令来部署应用程序而不使用ANT脚本?如果有任何这样的实施,你能指导我们吗?我想知道在ANT开发之前,JAVA开发人员是如何部署大型应用程序的。我知道MAKE命令(在我们的服务器中可用)不适合java应用程序

注意:我们将拥有复杂的包层次结构(最多4个级别)


更新:看来我没有一个直截了当的答案。我想说服我们的客户使用ANT。如果没有,我将根据下面的评论为我的客户开发一个跨平台定制构建工具。。。谢谢各位。。如果我们知道打包和部署的正确步骤,我不认为构建这种类型的工具不是那么困难…

我认为整个设置非常奇怪,但无论如何

war文件非常简单。它是一个具有给定目录结构的ZIP文件。您可以使用一个shell脚本轻松创建它,该脚本首先运行
javac
来编译源代码,然后将文件复制到正确的目录,最后将其打包到扩展名为.war的ZIP文件中

您可以在网上找到.war文件的规范。或者,您可以在您的环境中构建一个,使用ZIP工具打开它,并查看哪些文件需要放在哪里


更新:如果您的应用程序很大,则可以将其拆分为模块。每个模块将被编译并打包成一个单独的.jar文件(基本上也是一个ZIP文件)。如果一个模块依赖于另一个模块,那么只需将所需的.jar文件作为类路径参数传递给编译器。

如果您确实必须接受客户机的要求,那么我可能会这样做

为了避免修改您添加的每个文件的依赖关系,我将介绍一种将源代码、jar文件和输出文件放在何处的约定。然后,我将创建一个带有一些设置的脚本:

  • 战争的名字
  • 图书馆位置列表
  • 源根的列表,可能让根的文件夹名成为jar文件名
  • 然后,在运行脚本时,它将创建一个类路径,其中包含库位置列表中显示的所有jar文件。然后,它将为每个源位置编译java文件,构建一个jar,并将jar文件添加到类路径中(以防以后的模块需要它)

    最后,它将使用外部库、新创建的JAR构建一个web应用程序结构,通过asp文件(可能是预编译的)进行复制,然后使用zip将web应用程序结构打包到war文件中


    找出哪些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。