java - 如果没有更改,则跳过 DLL 编译
问题描述
我正在尝试为我们这里的应用程序优化我们的构建过程。如果文件时间戳没有使用 Netbeans Ant 脚本更改,我想跳过我们的后端 .dll 文件的编译。我一直在使用使用 Ant和高级自由形式项目配置作为参考点的增量和快速构建,但似乎需要 2 个构建目标才能在第一个链接中创建 .timestamp 比较。
有没有办法绕过对 2 个目标的需求,而是检查 .dll 文件的时间戳?还是我只需要在我的调用中添加另一个标签来进行比较,还是我试图做的事情不可行?任何帮助将不胜感激,或者如果知道更好的方法,我愿意倾听。
我们使用 Netbeans 编译我们的项目,并且默认使用 Ant。到目前为止,我已经包含了我的 build.xml Ant 脚本的一个片段。
提前致谢!
<target name="init-skip-dll" description="initializes the skip property for the Ada dll">
<uptodate srcfile="create-ada-dll.timestamp" targetfile="ada-dll.timestamp" property="ada-dll.skip" value="true" />
</target>
<target name="-build-dll" description="builds the Ada dll if needed" depends="init-skip-dll">
<exec executable="gprbuild.exe">
<arg value="-P"/>
<arg file="..\DLL\ifccs_dll.gpr"/>
</exec>
<touch file="create-ada-dll.timestamp"/>
</target>
解决方案
我不使用 Ant,但 Make 也存在同样的问题;Ada 依赖规则很复杂,最好通过无条件地让 gprbuild 做任何事情来更新 DLL。如果 DLL 实际上是最新的,Gprbuild 除了检查依赖关系之外什么都不做。
在 Make 中,这涉及到一个虚假的目标:例如,对于一个真实的目标testbed
,
testbed: force
gprbuild -p -P testbed
.PHONY: force
或者对于已经是假的目标
all:
gprbuild -p -P build_runtime.gpr
.PHONY: all
顺便说一句,请注意-p
,它表示创建所需的目录,例如对象目录。
推荐阅读
- fonts - 创建材质图标子集
- php - 我在具有环境的 MVC PHPMailer 上面临持久的“405 Method Not Allowed””,并且我的路由错误
- xml - Matlab 并行参数化单元测试未记录 JUnit XML 编写器所需的错误数据
- javascript - 对于 Express 中的 POST 请求,Req.body 为空
- c# - WPF 无法将 tabitem 标题定位到左侧
- node.js - npm install -g @vue/cli VUE CLI安装错误
- python - 如何使用 miniconda 在 Windows 10 上安装 aiohttp?
- python - 将 IF 与 AND/OR python 结合
- arrays - Angular 构造函数中关于带有 colDefs 和 rowData 的 JSON 数组的错误
- python - 使用 snscrape 获取“无法找到访客令牌”错误