問題タブ [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.
swift - Swift でビルドの日時を取得する
__DATE__
Objective-C で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 ビルド内で何が起こっているかについて、誰かが提案できますか? Jenkins v1.560 と maven プロジェクト プラグイン v2.0 を使用しています。Maven プラグインまたは Jenkins をアップグレードすることは、現在私にとって選択肢ではありません。
更新 1
ビルド出力の分析によると、主要なビルド時間は「POM の解析」(約 30 分) と「メタデータの収集」ステップ (約 20 分) に費やされています。これらの2つのステップで正確に何が起こるかについて、誰か知っていますか?
java - ビルド時間を短縮するためにコードの一部をオフにする (Gradle)
時間の経過とともに成長した Android プロジェクトがあり、サイズが大きくなると gradle のビルド時間が長くなりました。
65k の制限を下回っている間 (約14秒) は耐えられました。現在、multidex では36秒かかります。
だから私の質問は - 使用されていないコードの部分を「オフ」にして、65k の制限以下に戻す方法はありますか?
たとえば、gradle を介して取り込まれ、数千のメソッドを持つ amazon s3 sdk をオフにします。
プロガードでコードを削除できることは知っていますが、それではビルド時間がさらに長くなります。
それを使用するパーツを開いたときに実行時にクラッシュすることに満足しています。テストをより迅速にしたいだけです。
gradle インポートから amazon を削除すると、明らかに次のようになります。
Error:(24, 26) error: package com.amazonaws.auth does not exist
どういうわけかエラーを無視する方法はありますか? Picasso では、OkHttp を使用しているかどうかを確認するランタイム チェックがあり、使用していない場合は標準のネットワークを使用することを知っています。
このような私にできることはありますか?それとも他の方法ですか?
javascript - NodeJS を使用してビルド、サーバー、クライアント、および共有 JavaScript コードを整理する方法
サーバーで NodeJS を使用することで私が常に感じている大きな利点の 1 つは、サーバーとクライアント側の間でコードのビットを共有できる可能性があることです (例: 入力検証)。実際に NodeJS を使用して開発を行っている今、私が見つけた 1 つの問題は、コードの各本体が実行される責任とコンテキストを決定することです。以下に、これらの問題を高めるのに役立つ可能性のある、私が見落としている可能性のある規則やガイダンスについての啓発を得ることを期待して、私が経験した困難のいくつかをリストします.
ビルド時のコード
基本的なドキュメントに従う方法で Gulp、Grunt、またはバニラ NPM を使用するプロジェクトのビルド時のコードは、通常、非常に簡単に理解できます。小規模なプロジェクトのほとんどは、すべてのコードを 1 つのファイル内に保持する傾向があり、ファイルには gulpfile.js のような従来の名前が付けられる傾向がありますが、大規模なプロジェクトでは、これらのスクリプトが分割され始めるのを見てきました。gulp ファイルが複数のファイルに分割され、別のディレクトリに配置されているケースをいくつか見てきました。さらに悪いことに、gulpfile.js ファイルにそのような名前が付けられていないケースを見つけたので、新しい開発者が gulpfile の場所を探すために探し回り、場所が見つかったら、gulp コマンドを常に特定の-で実行する必要があります。 -gulpfileオプション。
実行時サーバー側コード
基本ノード アプリケーションのエントリ ポイントでは、ノード コマンドを実行するときに特定の JavaScript ファイルを指定する必要があるだけのようです (例: node script.js
)。Expressを使用するような Web サーバー アプリケーションの場合、慣例により、エントリ ポイント ファイルは server.js と呼ばれることが多く、通常はアプリケーションのルート ディレクトリにあります。ただし、開発者環境でWebサーバーを実行する場合など、他の場合では、gulpタスクがNode.jsの起動を担当するのを見てきました。これらの場合、エントリ ポイントを含める方法は複数あるようですが、私が見つけた 1 つの例は、webpack コンパイラを起動してから require を行うことです。エントリ ポイント スクリプトのステートメント。典型的なノード デバッグコマンドを実行する方法に関する通常のガイダンスを組み込む方法を理解することは、このタイプのセットアップでは自明ではありません。アプリケーションのエントリ ポイント以外に、NodeJS/Express アプリケーションのディレクトリ構造に関する一般的なガイダンスはないようです。これは、サーバー側の特定のコードを所定の場所に保持して、その場所を特定し、ビルド時およびクライアント側のコード。
サーバー側のコードが、静的コンテンツの提供、サーバー側で生成されたビュー (MVC など)、およびクライアントへの API の提供の両方の目的で使用される場合、サーバー側の話はさらに複雑になります。側。私の好みは、アプリケーション プロジェクトから API を分離することですが、他の人からは、そうすることに複雑すぎるという感覚があると感じています。
実行時のクライアント側コード
クライアント側のコードは、要求された最初のページに基づいてさまざまなエントリ ポイントを持つことが多いため、これは注意が必要です。ただし、一般的なケースでのリソースへのマッピング方法に関する URL の一般的な透明性と、最新のブラウザーでのデバッグ ツールの強力さにより、スクリプトに従うことはそれほど難しくありません。クライアント側のコードの代わりに難しいのは、通常、ファイルをコピーして別の名前で構造のような製品に配置する典型的なビルドプロセスです。例として、srcまたはjsというフォルダーを持つプロジェクトがあります。ファイルの一部のみがたまたまビルド タスクに含まれ、ファイルが変換され、多くの場合連結され、配布フォルダーに配置されることを除いて、クライアント側とサーバー側のコードが混在しています。私が見たこれらの配布フォルダーの一般的な名前は、dist、public、www、およびwwwrootです。常にではありませんが、多くの場合、これらのディレクトリはプロジェクトのルートにあります。これにより、ビルド スクリプトを調べなくても、場所を簡単に見つけることができます。
私の希望は、これらすべてを正気の方法でまとめる方法について、おそらく権威ある情報源によって、主に私のような右足で始めたいと思うかもしれない人々にガイダンスを与えるための一般的なガイダンスがあることです. 副次的な効果として、たとえそれが緩いものであっても、ある種の標準を参照できるようになることで、チームが開始時に発明して議論しなければならないボイラープレートの量を減らすこともできます。上記の各コンテキスト内には、AngularJS、Meteor、またはクライアント側の ReactJS で従うものなど、テクノロジー固有の規則がいくつかあることは明らかです。私が探している規則は、言語とプラットフォームがそれぞれを区別する明白な方法ではなくなった、エンドツーエンドの JavaScript アプリケーションで主要な高レベルのコンテキストを分離することに特化しています。
go - Goでビルド時に定数を定義する方法はありますか?
const
Go には、それぞれ異なる値が定義された一連のバイナリでコンパイルしたいプログラムがあります。より明確に、私はそのようなものを持っています:
ここでwordLen
は、値 6 に関連付けられていますが、値が 5 から 10 までの異なるバイナリが必要です。これを変数にして、配列ではなくスライスを使用することもできますが、パフォーマンスに大きな影響を与えることになります。私のソフトで(はい、試しました)。
特定のバイナリgo build
の値を示すために、引数にビルドタグを付けたいと思います。wordLen
それで、これを行う(可能な限り慣用的な)方法は何ですか?