我终于设法用一个旧的独立(非Web)Java应用程序创建一个Netbeans项目,该应用程序只包含单个.java源代码。现在我基本上有两个关于Netbeans Subversion交互和应用程序部署的问题:
您是否通常将所有Netbeans项目文件签入存储库?
如果我使用Netbeans(或ant)构建项目,我会得到一个.jar文件和一些额外的jar库。为了使应用程序在服务器上正常运行,需要一些额外的配置文件和目录(例如log /)。应用程序本身是一个J2SE应用程序(无框架),它从Linux平台上的命令行运行。您将如何部署和安装此类应用程序?如果我能看到当前安装的应用程序版本(也许通过将版本号附加到已安装的应用程序路径),那也很好。
感谢您的任何提示。
答案 0 :(得分:2)
不,通常不会。任何特定于NetBeans(或Eclipse,IntteliJ等)的东西,我都不会签入;尝试使用您的ant脚本从命令行进行构建,并准确生成您想要的内容。 build.xml可以用于其他IDE,或者与Anthill或CruiseControl一起使用,用于自动构建/持续集成,因此应该检入。检查生成/创建工件所需的内容。
您没有指定什么类型的服务器,或者确切的应用程序类型。一些应用程序通过JNLP / WebStart部署,由多个用户下载,并且具有不同于服务器上的一个用户独立部署的规则,而不使用GUI作为监视应用程序。除非您能提供有关您的应用程序,服务器环境等的更多详细信息,否则我无法帮助您。 关于配置文件,你如何访问它们?它们是静态的,永远不会改变(可以使用ResourceBundle加载)吗? ?您可以将它们添加到jar文件中以在ResourceBundle中查找它们,但这一切都取决于您在那里做什么。如果必须在jar文件之外进行修改而不重新编译,请使用安装程序脚本复制它们。 至于目录,它们必须已经存在吗?或者应用程序是否检查它们的存在,并在必要时创建它们?如果应用程序可以在缺席时创建它们,则无需创建它们。如果他们需要在那里,您可以使其成为安装脚本的一部分,以便在安装jar文件之前创建这些文件夹。 版本号可以像在应用程序中的某处添加about框一样简单,并在配置/属性文件中查找版本字符串。它必须得到维护,但至少你可以访问一些让你知道你已经部署了build 9876.5.4.321(或者你使用的任何版本编号方案)的东西。
答案 1 :(得分:0)
理想情况下,您不应将应用程序源和配置绑定到特定的IDE。
Questionwise,
您可能需要更改应用程序,以使其结构非常通用,并且可以在任何IDE中进行编辑。
这是一个网络应用程序吗?一个独立的Java应用程序?如果您澄清这些内容,则可以更轻松地回答您的问题。
答案 2 :(得分:0)
我们不会检入/ build或/ dist目录。
我们倾向于将此结构用于SVN中的Netbeans项目:
/project1/
/trunk
/tags/
/1.0
/1.1
/binaries/
/1.0
/1.1
当需要更改时,我们从trunk /检查netbeans项目并对其进行更改并重新检入。一旦需要发布项目,我们会将netbeans项目文件的SVN副本复制到下一个标记版。我们还获取了可部署(JAR或WAR)的副本,并将其放在二进制文件下的版本目录中,以及任何依赖项和配置文件。
通过这样做,我们有一个与源分开的干净的版本化可部署。 deployables是名称中的版本 - project1-1.0.jar,project1-1.1jar等。
我不同意talonx关于保持您的源非IDE特定 - 通过不在SVN中存储IDE文件以及您为结帐,更改,签入和部署周期添加额外的复杂性。如果将IDE项目文件存储在SVN中,您只需检查项目,启动IDE并点击构建。您不必完成在IDE中设置新项目的步骤,包括您的SVNed文件,设置依赖项等。它可以节省时间并且意味着所有开发人员都在使用相同的设置,从而减少错误和差异。你想要的最后一件事是开发人员检查项目以修复一个小错误,并且必须花时间去寻找依赖关系并设置内容。
答案 3 :(得分:0)
回答第2个问题 - 谁是这个应用的消费者? 如果它是一个内部应用程序,并且只有你(或其他开发人员)将要部署它,那么你所拥有的就完全没问题了。扔进一个解释所需目录的README文件。
如果您要将其发送给客户端进行安装,那么这是一个不同的问题,您应该使用安装程序。有一些安装程序包含一个ant脚本和你的资源,这是一个很好的方法,特别是如果你不需要GUI ...只需编写一个简单的ant脚本,将所有内容放在正确的位置。
版本号取决于您 - 命名JAR并不是一个坏主意。我也习惯在启动时打印出版本号,这可以派上用场。