Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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
使用Netbeans/ant部署java(命令行)应用程序_Java_Deployment_Netbeans_Ant - Fatal编程技术网

使用Netbeans/ant部署java(命令行)应用程序

使用Netbeans/ant部署java(命令行)应用程序,java,deployment,netbeans,ant,Java,Deployment,Netbeans,Ant,我终于成功地用一个旧的独立(而不是Web)Java应用程序创建了一个Netbeans项目,该应用程序只由单个.Java源代码组成。现在我有两个关于Netbeans Subversion交互和应用程序部署的问题: 您是否通常将所有Netbeans项目文件签入到存储库中 如果我使用Netbeans(或ant)构建项目,我会得到一个.jar文件和一些额外的jar库。为了让应用程序在服务器上正常运行,需要一些额外的配置文件和目录(例如日志)。该应用程序本身是一个J2SE应用程序(无框架),在Linux平

我终于成功地用一个旧的独立(而不是Web)Java应用程序创建了一个Netbeans项目,该应用程序只由单个.Java源代码组成。现在我有两个关于Netbeans Subversion交互和应用程序部署的问题:

  • 您是否通常将所有Netbeans项目文件签入到存储库中

  • 如果我使用Netbeans(或ant)构建项目,我会得到一个.jar文件和一些额外的jar库。为了让应用程序在服务器上正常运行,需要一些额外的配置文件和目录(例如日志)。该应用程序本身是一个J2SE应用程序(无框架),在Linux平台上从命令行运行。您将如何部署和安装这样的应用程序?如果我能看到当前安装的应用程序的版本也很好(可能通过在安装的应用程序路径中添加版本号)


  • 感谢您提供的提示。

    理想情况下,您不应该将应用程序源代码和配置绑定到特定的IDE

    问题是

    • 我建议你不要。使您的存储库结构独立于IDE
    • 您可能需要更改应用程序,使其结构非常通用,并且可以在任何IDE中编辑

      这是一个网络应用程序吗?独立的Java应用程序?如果你澄清这些,回答你的问题就会更容易


      • 我们不签入/build或/dist目录

        我们倾向于将此结构用于SVN中的Netbeans项目:

         /project1/
                  /trunk
                  /tags/
                       /1.0
                       /1.1
                  /binaries/
                           /1.0
                           /1.1
        
        当需要更改时,我们从trunk/签出netbeans项目,并对其进行更改并将其签回。一旦需要发布项目,我们就将netbeans项目文件的SVN副本复制到下一个标记版本。我们还获取可部署(JAR或WAR)的副本,并将其与任何依赖项和配置文件一起放在binaries下的version目录中

        通过这样做,我们有了一个与源代码分离的干净、版本化的可部署系统。可部署版本的名称为-project1-1.0.jar、project1-1.1jar等等

        我不同意talonx关于保持您的源代码不特定于IDE的观点-通过不将IDE文件与源代码一起存储在SVN中,您将给签出、更改、签入和部署周期增加额外的复杂性。如果您将IDE项目文件存储在SVN中,您只需签出项目,启动IDE并点击build。您不必经历在IDE中设置新项目的步骤,包括您创建的文件、设置依赖项等。这节省了时间,意味着所有开发人员都使用相同的设置,从而减少了错误和差异。您最不希望开发人员签出一个项目来修复一个小错误,并且必须花费时间来查找依赖项并进行设置

      • 不,通常不会。任何特定于NetBeans(或Eclipse、IntteliJ等)的东西,我都不会签入;尝试使用ant脚本从命令行构建它,并生成您想要的内容。xml可以用于其他IDE,也可以与Anthill或CruiseControl一起用于自动构建/持续集成,因此应该签入。签入生成/创建工件所需的内容

      • 您没有指定服务器的类型,也没有指定应用程序的确切类型。有些应用程序是通过JNLP/WebStart部署的,由多个用户下载,它们的规则不同于服务器上一个用户单独部署的、不使用GUI作为监控应用程序运行的应用程序。我无法在这方面给您更多帮助,除非您能提供有关应用程序、服务器环境等的更多详细信息。 关于配置文件,您如何访问这些文件?它们是静态的并且永远不会改变(您可以使用ResourceBundle加载的东西)?您可以将它们添加到jar文件中,以便在ResourceBundle中查找它们,但这完全取决于您在那里做什么。如果它们必须在jar文件之外进行修改而无需重新编译,请使用安装程序脚本复制它们。 至于目录,它们必须已经存在吗?或者应用程序是否检查它们的存在,并在必要时创建它们?如果应用程序可以在不存在时创建它们,则您无需创建它们。如果需要,您可以在安装jar文件之前将其作为安装脚本的一部分来创建这些文件夹。 版本号可以很简单,只需在应用程序的某个地方添加一个about框,然后在config/properties文件中查找版本字符串。必须对其进行维护,但至少您能够访问一些内容,让您知道您已部署build 9876.5.4.321(或您使用的任何版本编号方案)

      • 回答问题#2——谁是此应用程序的消费者? 如果它是一个内部应用程序,并且只有您(或其他开发人员)将要部署它,那么您所拥有的一切都是完全正确的。加入一个自述文件,解释所需的目录

        如果您要将其发送到客户机进行安装,这是另一个问题,您应该使用安装程序。有一些安装程序包装ant脚本和您的资源,这是一个很好的方法,特别是如果您不需要GUI。。。只需编写一个简单的ant脚本,将所有内容放在正确的位置


        版本号由您决定——命名JAR并不是一个坏主意。我还有一个习惯,就是在启动时打印版本号,这很方便。

        这一点很好,但由于Netbeans已经在使用ant进行构建/测试机制,我认为至少签入build.xml文件是有意义的(即使它们的结构看起来相当复杂)。只要构建XML没有任何特定于Netbeans的内容(可以吗?),就可以签入它们。但是我看到Netbeans在build.xmls中生成了一些奇怪的东西,所以我会对这种事情保持警惕