我想第一次创建一个JAR与Ant,并遇到一些困难。这里是我的项目目录结构:无法获得jar文件结构化我想用Ant的方式
MyProj/
src/
com.me.org
Fizz
Buzz
dist/
classes/
在我的蚂蚁buildscript,我复制我所有的源文件添加到dist/classes/
文件夹。然后我包括dist/classes
作为文件集在我的JAR任务,像这样:
<jar destfile="dist/myProj.jar">
<manifest>
<attribute name="Sealed" value="true" />
</manifest>
<fileset dir="dist/classes"/>
</jar>
jar任务执行并产生一个JAR。然而,当我把JAR的另一个项目(Eclipse中)的构建路径,并尝试使用任何Fizz
或Buzz
其他项目中,Eclipse是导入它们为:
进口classes.com.me.org。嘶嘶声;
等,这是因为Eclipse一定认为我classes/
目录是一个包!
我以为有什么东西我可以在清单做的说,使他们将导入为“嘿根包classes/com/
,不classes/
!”:
进口com.me .org.Fizz;
我读到了关于Ant <manifest>
的任务,找不到我要找的东西。任何人有什么想法我可以在这里做什么?
而且,如果你好奇,为什么我要打包他们classes/
目录下,然后我会说的,因为我喜欢有一个包含一个JAR内一个单一的目录的想法整个类路径。尤其是如果存在非Java类路径资源(图像,脚本,文件等),则需要一个地方将软件包根(com/
)和这些其他资源放在同一父目录中。
本来我打算叫这个目录classpath/
,但后来我决定使用与WAR文件规范相同的约定,这需要WAR内有一个classes/
目录。
这就是为什么。 ;-) 提前致谢!
我认为这是一个jar惯例,软件包必须从根开始,而不是放在某个目录下。 – oers 2012-03-16 17:23:06
不要怀疑你的oers(和谢谢!),但你能指导我一些文档?在我的任何搜索中我都没有看到。 – IAmYourFaja 2012-03-16 17:25:27
没有*要求* war文件根本没有/ WEB-INF/classes目录(不是/ classes);你的应用的所有类都可以放在一个罐子里。类需要精确定位到它们的包的状态(无定制类加载器)。在构建过程中发生一切Glomming发生。我不明白你认为你是通过强加一个非标准层次结构来完成的。 – 2012-03-16 19:32:45