2013-01-22 27 views
1

我在本地运行我的Ant build.xml文件,并在运行Jenkins的服务器上运行。为什么我的Ant类路径在Eclipse中正常但在Jenkins上为空?

本地,在Eclipse内部,构建工作非常好。我用设置类路径:

<path id="classpath"> 
    <fileset dir="${lib.dir}" includes="**/*.jar" /> 
</path> 

,然后我用下面当我运行一个目标:

<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false"> 
    <classpath refid="classpath" /> 
</javac> 

当调试使用echo classpath中显示所有这一切都在我的project/lib文件夹中的可用罐。但是,当我Jenkins获取此build.xml文件并远程运行它时,它会打印一个空的类路径(使用相同的echo目标)。

为什么我的类路径根据Eclipse和Jenkins而不同?

+0

你的操作系统是什么?如果您使用类似操作系统的unix,则可以检查文件权限。 – erhun

+0

我在Unix上,但如果Jenkins可以访问build.xml文件和我的所有源文件,它应该能够访问我的lib文件夹。 – sdasdadas

+1

我看到两个可能的问题,都与$ {lib.dir}相关:如果它是相对路径,可能会因构建运行时的“current”目录而有所不同 - 因为它可能在eclipse/jenkins中不同(正如这里所指出的那样:尝试打印$ {basedir})。如果它是绝对的,那么在不同的文件夹结构中可能会有问题。 –

回答

4

您的构建环境Jenkins服务器将与您的桌面开发环境看起来有点不同。

完整性检查:在哪里/如何为$ {lib.dir}提供值? 通常在构建文件中设置属性 - 你可以在这里发布吗?

+0

是的,属性文件。它等同于'lib.dir = lib'编辑:它与build.xml位于同一目录级别。 – sdasdadas

+0

好的,也许尝试'lib.dir =。/ lib'。也可以尝试回显lib.dir的值以及类路径 – demaniak

+0

在测试了您和Peter的说法之后,我在Eclipse和Jenkins上打印了三件事(classpath,base directory和library directory)。 Jenkins上的类路径是空的,但在Eclipse上正确。两个库目录是相同的。基本目录是不同的,但最终的文件夹(我的主项目文件夹)是相同的。 EG:'****/****/***/project'和'home/***/****/project'。所以我不认为这是一个位置问题... – sdasdadas

相关问题