问题标签 [build-time]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android-version-dependent编译
是否有任何适用于 Android 的条件编译?我正在尝试使用 android.webkit.WebView.onPause(),同时还支持 Android API 8。
我尝试了 Fiddler 和 Andrey Voitenkov 在Conditional compile in Android 中提出的解决方案?:
...但我仍然无法编译/运行应用程序:
“WebView 类型的 onPause() 方法未定义”
和
“您的项目包含错误,请在运行您的应用程序之前修复它们。”
我做错了什么,还是根本不可能做到这一点?
swift - 在 Swift 中获取构建日期和时间
我在 Objective-C 中使用__DATE__
and__TIME__
来获取我的应用程序的构建日期和时间。我找不到在 Swift 中获取这些信息的方法。可能吗?
maven - 使用 Intellij IDEA 加快多模块 maven 项目的构建过程
我正在开发具有 23 个模块的多模块 Java EE Web 应用程序项目(maven 项目)。它有主要的 4 个模块,可以单独使用,其他模块支持这 4 个模块的后端模块。
构建项目时,完成构建过程需要 4-15 分钟,因为所有模块都是与构建过程一起构建的。
- 重建时,我想避免使用 IDE 本身编译和打包未更改的源/模块。(此外,我还需要选择性地清理那些改变的模块)
- 我想用我需要的选定模块构建项目,而不使用命令行参数(使用 IDE 本身)。
我也知道 Maven 在某种程度上。请有人帮助我克服这些问题。
maven - Jenkins 中 Maven 作业的构建时间突然增加
我在 Jenkins 中有一个 Maven 构建作业设置,具有以下值得注意的配置:
构建时间约为 20 分钟。但是,从一段时间开始,构建时间急剧增加到 1 小时 15 分钟。这项工作仍在逐步构建,当前的内部版本号约为 1450。我只保留了 3 个旧版本。我的问题是为什么构建时间会有如此高的增量?
以下是我尝试并观察到的事情:
Maven 作业默认创建指纹。对于大量构建(当前为 1450),可能会在构建期间访问大量指纹数据,因此会增加整体构建时间。但是,我清理了所有现有的指纹并尝试重建项目。这对构建时间没有影响(仍然需要 1 小时才能完成)。
我尝试进行完整构建,而不是增量构建,以了解是否花费大量时间来识别要构建的模块。这也没有帮助,完整的构建在 1 小时 20 分钟内完成。
我还尝试在专用奴隶上构建作业,以防问题是由于资源可用性造成的。这对构建时间没有影响。
唯一有效的是重命名工作本身。重命名后构建将在大约 20 分钟内再次完成。但我不确定这是否是一个理想的解决方案。我也不明白这种重命名工作的方法背后的逻辑。
有人可以建议 Maven build 内部发生了什么以增加大量构建后的构建时间吗?我正在使用 Jenkins v1.560 和 maven 项目插件 v2.0。升级 Maven 插件或 Jenkins 现在不是我的选择。
更新 1
根据对构建输出的分析,主要构建时间花在“解析 POM”(大约 30 分钟)和“元数据收集”步骤(大约 20 分钟)上。有没有人知道这两个步骤中到底发生了什么?
java - 关闭部分代码以加快构建时间 (Gradle)
我有一个随着时间增长的 Android 项目,随着规模的增长,gradle 构建时间也随之增长。
当它低于 65k 限制时,它是可以忍受的——大约14 秒。现在使用 multidex 需要36s。
所以我的问题是 - 有没有办法“关闭”部分未使用的代码,使其回到 65k 限制之下?
例如,关闭通过 gradle 引入并具有数千种方法的 amazon s3 sdk。
我知道您可以使用 proguard 剥离代码,但这只会增加构建时间。
当我打开使用它的部件时,我很高兴它在运行时崩溃,只是想让测试更快。
在我从 gradle 进口中删除亚马逊的那一刻,我显然得到了这个:
Error:(24, 26) error: package com.amazonaws.auth does not exist
有没有办法以某种方式忽略错误?我知道在 Picasso 中,它有一个运行时检查来查看您是否有 OkHttp,如果没有 - 使用标准网络。
我能做这样的事情吗?还是有什么其他方式?
javascript - 如何使用 NodeJS 组织构建、服务器、客户端和共享 JavaScript 代码
我一直认为在服务器上使用 NodeJS 的一大好处是可以在服务器端和客户端之间共享一些代码(例如输入验证)。既然我实际上是在使用 NodeJS 进行开发,我发现的一个困难是确定执行每个代码主体的职责和上下文。下面我将列出我遇到的一些困难,希望对我可能忽略的有助于提升这些问题的约定或指导有所启发。
构建时代码
以遵循基本文档的方式使用 Gulp、Grunt 或 vanilla NPM 的项目的构建时间代码通常很容易遵循。大多数较小的项目倾向于将所有代码保存在一个文件中,并且该文件往往被命名为 gulpfile.js 之类的常规名称,但是对于较大的项目,我已经看到这些脚本开始被拆分。我见过一些情况,其中 gulp 文件被拆分为多个文件并放在单独的目录下。更糟糕的是,我发现 gulpfile.js 文件甚至没有被命名为这样的情况,这导致新开发人员四处寻找 gulpfile 所在的位置,一旦找到,gulp 命令总是必须使用特定的- -gulpfile选项。
运行时服务器端代码
基本节点应用程序的入口点似乎只需要在运行节点命令时指出一个特定的 JavaScript 文件(例如node script.js
)。对于 Web 服务器应用程序,例如使用Express的应用程序,我注意到按照惯例,入口点文件通常称为 server.js,通常可以在应用程序的根目录中找到。然而,在其他一些情况下,例如在开发人员环境中运行 Web 服务器时,我看到 gulp 任务承担了启动 Node.js 的责任。在这些情况下,似乎有多种方法可以包含入口点,但我发现的一个示例是启动 webpack 编译器,然后是require入口点脚本的语句。在这种类型的设置中,弄清楚如何合并有关如何完成典型节点调试命令的常规指导并非易事。除了应用程序的入口点之外,似乎没有任何关于 NodeJS/Express 应用程序目录结构的一般指导,将服务器端特定代码保留在其位置以帮助定位它并将其与构建时分开,并且客户端代码。
如果服务器端代码用于提供静态内容、服务器端生成的视图(例如使用 MVC)以及为客户端提供 API,服务器端的故事会变得更加复杂边。我的偏好是将 API 从应用程序项目中分离出来,但我从其他人那里得到的感觉是这样做涉及到一种过于复杂的感觉,我认为这是一种合理的关注点分离。
运行时客户端代码
由于客户端代码通常可以根据请求的第一页有各种入口点,这可能会很棘手。然而,由于 URL 的一般透明度以及它们如何映射到典型情况下的资源以及调试工具在现代浏览器中变得多么强大,因此遵循脚本并没有太大的麻烦。相反,客户端代码的困难更多的是典型的构建过程,这些过程通常最终复制文件并将它们以不同的名称放入类似生产的结构中。例如,一个项目有一个名为src或js的文件夹它将客户端和服务器端代码混合在一起,除了只有一部分文件碰巧包含在构建任务中,该构建任务转换并经常连接文件并将它们放置在分发文件夹中。我见过的这些分发文件夹的常用名称是dist、public、www和wwwroot。通常(如果不总是)这些目录位于项目的根目录下,这至少使它更容易定位,而无需询问构建脚本。
我希望有一些关于如何以理智的方式将所有这些放在一起的一般性指导,也许是由权威来源提供的,主要是为了给像我这样可能想要从正确开始的人提供指导。作为一个副作用,也许能够参考某种标准,即使它是一个松散的标准,也可以减少团队在开始时必须发明和讨论的样板数量。在上面列出的每个上下文中,显然会有一些特定于技术的约定,例如客户端的 AngularJS、Meteor 或 ReactJS 遵循的约定。我正在寻找的约定更具体地用于分离端到端 JavaScript 应用程序中的主要高级上下文,其中语言和平台不再成为区分两者的明显方式。
visual-studio - VS2015,如何在输出目录名中添加TimeStamp?
我正在使用 VS2015,常见的 C++ 项目。是否可以将当前时间或日期或时间戳添加到输出目录的名称?
例如:我在 15:23:45 按下“Build”按钮,.exe 文件输出到 /bin/2016_02_29-15_23_45。
go - 有没有办法在 Go 的构建时定义一个常量?
我在 Go 中有一个程序,我想在一堆二进制文件中编译,每个二进制文件的const
值定义不同。更清楚的是,我有类似的东西:
在这里,wordLen
与值 6 相关联,但我想要不同的二进制文件,值范围从 5 到 10。我可以将其设为变量,然后使用切片而不是数组,但这会对性能产生巨大影响在我的软(是的,我试过)。
我希望在go build
参数上有一些构建标签来指示wordLen
给定二进制文件的值。那么,这样做的(尽可能惯用的)方法是什么?
asp.net - 为什么 Visual Studio 会说我的解决方案/网站有 0 个错误并且确实有错误(然后浏览器会出现“错误 404.17”)?
当我在 ASP.NET 项目中执行 Build > Rebuild Solution 和 Build > Rebuild Website 时,它会生成 0 个错误。但是当我通过 F5 运行它时,我得到,“有构建错误。你想继续并运行最后一次成功的构建吗? ”
我选择“否”,错误列表仍然显示 0 个错误(11 个警告)。
所以 Visual Studio 似乎表明该解决方案/网站有 0 个错误,然后又表明它确实有错误。是不是它有 0 个编译时错误,但它确实有构建时错误?如果是这样,我如何确定这些构建时错误是什么,以便我可以解决问题?
这是一个使用 IIS6 的 Visual Studio 2010 VB 网站。
更新
当我右键单击解决方案并选择“在浏览器中查看”时,我得到:“错误 404.17 - 未找到请求的内容似乎是脚本,不会由静态文件处理程序提供服务。”
更详细的异常转储是:
那么,这一切意味着什么呢?我怎样才能更恰当地将我的代码介绍给浏览器?
更新 2
我觉得这是最奇怪/最可怕的,也是令人反感的边缘。当我尝试各种方法来运行网站时,会发生以下情况:
ios - 创建 NSManagedObject 类时,使用 Coredata 的项目中的 Apple Mach-O 链接器错误
我有一个包含核心数据、基于故事板和 3 个类的项目。核心数据的目的是在 MapKit 上保存位置,但是当我创建 NSManagedObject 的子类“Spot”类时,我得到了这个 Buildtime 错误。它说:
在之前的评论中(这是一个已编辑的问题) - 据说原因是库中的代码重复......但老实说我不明白......任何帮助都会非常感激