我有一个关于管理编译和部署 jar 依赖项的正确方法的一般性问题。对于一个简单的库/应用程序,我通常会像下面这样布置 dev 目录。
Calculator
src
test
build
lib
…
有很多方法可以做到这一点,但这是我对通用项目的典型布局。我的问题围绕 lib 目录。我通常将我的项目所依赖的 jars 放在 lib 目录(log4j 等)中,因此在编译时我可以将各种路径设置为 lib\log4j.jar 或类似的东西。现在,当我们创建一个可分发的包时,我倾向于反映这种布局。
dist
Calculator.jar
lib
log4j.jar
addition.jar
subtraction.jar
这允许我设置一个脚本来设置我的类路径相对于主 jar 的位置,或者我可以在清单中为主 jar 设置类路径(在这种情况下为 Calculator.jar)这可能是也可能不是最好的方法这样做,但它对我有用,并且似乎是我与之交谈过的其他开发人员处理依赖项的公认方式。
当我想创建一个使用我以这种方式布置的其他项目的新项目时,我的问题就来了。
所以假设我想创建一个新的计算器项目,它使用上面示例中的计算器项目。如果我遵循相同的布局,我会得到如下内容:
dist
ScentificCalculator.jar
lib
Calculator.jar
lib
Log4j.jar
addition.jar
subtraction.jar
当然,你的依赖树越深,这可能会失控:
SuperWhizBangCalculator.jar
lib
ScientificCalculator.jar
lib
Calculator.jar
lib
log4j.jar
addition.jar
subtraction.jar
另一种选择是展平树:
SuperWhizBangCalculator
lib
ScientificCalculator.jar
Calculator.jar
log4J.jar
addition.jar
subtraction.jar
但这似乎有些不对劲。您失去了告诉您哪些库与您所依赖的组件一起使用的结构。所以我想知道是否有一个社区驱动的标准方法来做到这一点,并理解从来没有一个适合所有人的尺寸。
谢谢你的时间...