我有一个一般性问题,即管理编译和部署 jar 依赖项的正确方法是什么。对于一个简单的库/应用程序,我通常会像下面这样布置开发目录。
Calculator
src
test
build
lib
…
有很多方法可以做到这一点,但这是我对通用项目的典型布局。我的问题围绕着 lib 目录。我通常将我的项目依赖的 jar 放在 lib 目录(log4j 等)中,因此在编译时我可以将我的各种路径设置为 lib\log4j.jar 或类似的东西。现在,当我们创建可分发包时,我倾向于反射(reflect)这种布局。
dist
Calculator.jar
lib
log4j.jar
addition.jar
subtraction.jar
这允许我设置一个脚本来设置我的类路径相对于主 jar 的位置,或者我可以在 list 中为主 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
但这似乎有些不对劲。您失去了告诉您哪些库与您所依赖的组件一起使用的结构。所以我想知道是否有一个社区驱动的标准方法来做到这一点,理解从来没有一个适合所有人的大小。
谢谢你的时间...
最佳答案
不直接回答您的问题。但是您可以看看 Apache 的 Maven 2,它可以为您完成大部分“依赖管理”。
请注意,启动、运行和工作 Maven 2 有一些学习曲线:)
除此之外,第三个选项对我来说很有意义。
关于开发和部署期间的 Java 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2361042/