【发布时间】:2012-02-02 19:40:44
【问题描述】:
我通过复制应该排除 .cs 和其他文件的文件集来发布网站。我已经从命令行测试了我的 NAnt 脚本,它工作正常,但是当从 CCNet 调用它时,它会复制所有文件,完全忽略我的文件集上的排除项。有什么想法吗?
从 CruiseControl.Net 调用我的 NAnt 构建文件。
<tasks>
<nant>
<executable>$(nant.exe)</executable>
<baseDirectory>$(build-dir)\$(project-dir)</baseDirectory>
<buildArgs></buildArgs>
<nologo>true</nologo>
<buildFile>aview-dev.build.xml</buildFile>
<targetList>
<target>go</target>
</targetList>
<buildTimeoutSeconds>300</buildTimeoutSeconds>
</nant>
</tasks>
似乎不起作用的 NAnt 构建文件块(我的“发布”步骤的一部分)。
<copy todir="${publish.path}" includeemptydirs="false">
<fileset basedir="${src.path}" defaultexcludes="true">
<include name="**/**" />
<exclude name="**.csproj*"/>
<exclude name="**.cs"/>
<exclude name="**.vb"/>
<exclude name="**.sln"/>
<exclude name="**/obj/**"/>
</fileset>
</copy>
直接从命令提示符运行时,相同的 NAnt 文件可以正常工作。
nant -buildfile:test.build.xml -debug
我正在使用 NAnt 0.91 和 CCNet 1.6.7981.1
【问题讨论】:
-
我建议输出 ${publish.path} 和 ${src.path} 的值,看看它们在两个实例中是否相同。
-
谢谢拉米。我输出路径,它们在两种情况下都是相同的:“src\”和“published\”。批处理文件与 Nant 脚本位于同一目录中。我很确定我已经尝试过使用完整路径,但我会再试一次。
-
完整路径没有影响。在将 -debug 添加到 buildArgs 后,我检查了构建日志。它告诉我每个被删除和复制的文件,并且没有提到 .vb 文件。但是,当我查看“已发布”目录时,每个 .vb 文件都在那里。即使我在 NAnt 任务中删除/重新创建“已发布”目录,也会发生同样的事情。我不明白 .vb 文件是如何潜入其中的。甚至 .svn 文件夹也会被复制,默认情况下应该阻止它excludes="true"。
-
尝试使用
代替。您还可以尝试从 src.path 和 publish.path 中删除尾部反斜杠,看看是否有区别。