![]() |
1
3
我的一个建议是,您分发的目录树不应该是CVS中的目录树。有一个脚本将dist目录放在build下,然后将其压缩。该脚本可以将源代码控制的和派生的文件合并到其核心内容中。它还可以执行诸如清除SVN目录之类的操作,您不想分发这些目录。如果您希望能够以同样的方式处理开发和分布式树,只需确保dist的布局与开发项目的布局相同—最简单的方法是复制除了build子目录(和CVS目录,可能还有Eclipse.project和.classpath之类的目录)之外的所有内容。 我想你不会喜欢这个建议的。这可能是因为您认为分布式文件只是开发环境的一个可移植版本,但我认为事实并非如此,也不可能如此,也不必如此。如果你能接受这个想法,你可能会觉得我的建议是令人满意的。 编辑:我想了更多,看了一些我使用的脚本。我认为在这种情况下,我要做的是构建一个独立的树,即使是在开发中;将执行环境指向project root/build/app(如果可以的话,也可以指向project root/build),而不是project root,然后symlink(如果没有symlinks,则复制)所有必要的东西(无论是静态的,来自project root的,还是派生的,从内建)到那。然后,构建一个发行版就可以像压缩树一样简单(当然,使用一个解析符号链接的工具)。这方面的好处是它允许执行树的结构非常干净-它不会包含源目录、IDE文件、生成脚本或项目内部的其他支持文件等。如果您使用Subversion,它仍然会包含从静态区域链接的任何符号中的.svn目录;如果你用水银,它不会含有任何汞的东西。 |
![]() |
2
3
布局方面,我们使用的东西已经演变成非常接近Maven布局的东西( see here ). 这是一个非常实用的布局,已经被很多人使用。而且,如果你想稍后切换到Maven,你已经准备好了。我们有几个变体,其中最重要的是我们将自动化单元测试和集成测试分开。 在混合资源和建造艺术品方面-我当然建议不要这样做。正如您所看到的,它会干扰IDE索引和版本控制,并且通常会使生活变得困难。 据我所知,要么接受这种混合,要么将依赖项作为构建的一部分复制,并将输出视为一个单独的项目—如果需要,可以在另一个IDE窗口中不断打开。无论如何,把你的工作“作为用户”和“作为生产商”混合在一起的想法听起来会让人困惑。 |
![]() |
3
1
http://ant.apache.org/ant_in_anger.html 项目包含子目录
|
![]() |
4
0
sun/oracle对项目布局也有一些(可能有些过时)的一般建议,您可能想看看: Guidelines, Patterns, and Code for End-to-End Java Applications |
![]() |
Rodney · 如何在Ionic2构建脚本中运行copy命令 7 年前 |