これに対する答えはかなり明白であると思いますが、ここにそれは行きます:
学校用の小さなプロジェクト(Java)に取り組んでいるとき、それをコンパイルします。
私の小屋では、antを使用してプロジェクトを構築しています。
コンパイルはビルドのサブセットだと思います。これは正しいです?ビルドとコンパイルの違いは何ですか?
これに対する答えはかなり明白であると思いますが、ここにそれは行きます:
学校用の小さなプロジェクト(Java)に取り組んでいるとき、それをコンパイルします。
私の小屋では、antを使用してプロジェクトを構築しています。
コンパイルはビルドのサブセットだと思います。これは正しいです?ビルドとコンパイルの違いは何ですか?
回答:
「ビルド」は、ソフトウェアの「成果物」を作成するために必要なすべてのステップをカバーするプロセスです。Javaの世界では、これには通常、次のものが含まれます。
ご覧のとおり、コンパイルはビルドの(ほんの一部)にすぎません(ベストプラクティスは、MavenやAntなどのツールを使用してすべてのステップを完全に自動化し、継続的インテグレーションと呼ばれるビルドを継続的に実行することです)。
ここで私が見る回答の一部は文脈外のものであり、これがC / C ++の質問である場合はより理にかなっています。
短縮版:
「ビルド」は、コンパイルを含むプロセス全体を表す一般的な用語です。たとえば、ビルドプロセスには、Javaコードまたはドキュメントファイルを生成するツールが含まれる場合があります。
多くの場合、すべての.classファイルを取得して.jarに入れる「パッケージ」や、.classファイルと一時ディレクトリを削除する「クリーン」などの追加のフェーズがあります。
コンパイルとは、ソースコードをオブジェクトコードに変換することです。
リンクとは、オブジェクトコードとライブラリを組み合わせて生の実行可能ファイルにすることです。
ビルドは、コンパイルとリンクで構成されるシーケンスであり、インストーラーの作成などの他のタスクが含まれる可能性があります。
多くのコンパイラは、ソースコードをコンパイルした後、リンク手順を自動的に処理します。
簡単な言葉で
コンパイルはJavaコード(人間が読める形式)をバイトコードに変換するため、仮想マシンはそれを理解します。
ビルドは、コンパイルされたすべての部分をまとめ、実行可能ファイルを作成(ビルド)します。
実際、あなたは同じことをしています。Antは、ソフトウェアのコンパイルに関連するさまざまなタスクを実行できるXML構成ファイルに基づくビルドシステムです。Javaコードのコンパイルは、これらのタスクの1つにすぎません。ファイルのコピー、サーバーの構成、zipとjarのアセンブル、Cなどの他の言語のコンパイルなど、他にもたくさんあります。
ソフトウェアをコンパイルするのにAntは必要ありません。学校で行うように手動で行うことができます。Antのもう1つの代替手段は、Mavenという製品です。AntとMavenはどちらも同じことを行いますが、方法はまったく異なります。
Javaの場合:ビルドはライフサイクルであり、名前付きフェーズのシーケンスが含まれています。
たとえば、mavenには3つのビルドライフサイクルがあり、次の1つはdefault
ビルドライフサイクルです。
◾validate - validate the project is correct and all necessary information is available
◾compile - compile the source code of the project
◾test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
◾package - take the compiled code and package it in its distributable format, such as a JAR.
◾integration-test - process and deploy the package if necessary into an environment where integration tests can be run
◾verify - run any checks to verify the package is valid and meets quality criteria
◾install - install the package into the local repository, for use as a dependency in other projects locally
◾deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.
コンパイルはソースコードをバイナリに変換するだけで、ビルドは他の必要なファイルをビルドしてビルドディレクトリにリンクします