在Java / Groovy,afaik中,必须在相应的文件夹中定义一个包。结果是所有存储在/a/b/c
中的类文件都以package a.b.c
行开头。这仍然有必要吗?关于约定而不是配置,这不是DRY ...
当这个包定义是可选的时,会出现什么样的问题?
最佳答案
尽管目录结构与包结构相匹配是常规做法,但如果它们不匹配,则会出现某些问题,但实际上并不需要它们匹配。 Java也是如此(尽管很多人没有意识到这一点)。
下面是一个演示此情况的示例。
groovydemo $ mkdir classes
groovydemo $
groovydemo $ cat src/groovy/com/demo/SomeClass.groovy
package com.somethingotherthandemo
class SomeClass {}
groovydemo $
groovydemo $ groovyc -d classes/ src/groovy/com/demo/SomeClass.groovy
groovydemo $ find classes -type f
classes/com/somethingotherthandemo/SomeClass.class