5

Liferay SDK を使用した開発のベスト プラクティスを教えてください。SDK をダウンロードし、Eclipse を準備しました。動作します。新しいポートレットを作成し、ローカルの Liferay インスタンスを実行してテストできます。

これが私の状況です。私が持っているすべてのソース コードは Eclipse ワークスペースにあります。現在、私が取り組んでいるのはポートレットだけです。

Liferay SDK は、ワークスペースとはまったく異なる場所にあります。~/dev/liferay_sdk としましょう。Eclipse ワークスペースは ~/workspace にあります。

当初、それはそのように機能していませんでした。何らかの理由で Eclipse が Liferay SDK を見つけたり使用したりできません。Eclipse/Liferay の設定で「Project validation」を「Liferay Plugin SDK is not valid」を「Ignore」に変更したところ、問題なく動作するようになりました。

次の問題は、たとえば WAR をビルドする必要が生じたときに発生しました。ワークスペースのポートレット ディレクトリには、「build.xml」ファイルが存在します。しかし、その内部では別のxmlファイルを参照しており、これは1つ上のディレクトリに配置する必要があり、これは相対的な場所にあるより多くのものを参照しています。

つまり、Liferay SDK 内にポートレットなどがあることを前提としています。「~/dev/liferay_sdk/portlets」のように。

私の質問は、私は完全に間違っていますか、それともこれに関するベストプラクティスを提案してもらえますか?

SDK とコードを混在させたくありません。私には間違っているように思えます。

手伝ってくれてありがとう!

4

3 に答える 3

2

ベスト プラクティスは、ポートレット プロジェクトが Liferay Plugins SDK ディレクトリ内にある場合です。そうすれば、たとえば、Eclipse 用の Liferay IDE プラグインのすべての利点を活用できます。私の知る限り、Liferay IDE ではポートレット プロジェクトを別の場所に置くことはできません。Liferay SDK ディレクトリ内からプロジェクトを Eclipse にインポートするのは非常に簡単で、問題はありません。

しかし、ポートレット プロジェクトを Git リポジトリに保存しようとしたときにも、同じような問題に直面しました。シンボリック リンクを使用した解決策は、すべてのシステムで正しく機能しませんでした。したがって、任意のディレクトリから Ant タスクを実行できるように build.xml ファイルを少し変更しました。ポートレットの場合、次のようなものでした。

<project name="your-portlet" basedir="." default="deploy">
    <property file="build.properties" />

    <property name="project.dir" value="${liferay.sdk.home}" />

    <import file="${project.dir}/build-common-plugin.xml" />
</project>

build.properties でプロパティ「liferay.sdk.home」を定義する必要があり、Liferay プラグイン SDK へのパスである必要があることに注意してください。

他のタイプの Liferay プラグイン (テーマ、フックなど) については、そのタイプのプラグインをビルドするための別のビルド ファイルをインポートする必要があります。たとえば、テーマの場合は次のようになります。

<import file="${project.dir}/themes/build-common-theme.xml" />

アイデアが得られることを願っています。:) しかし、そのようなことをする前によく考えてください。

于 2012-08-30T14:07:58.337 に答える
1

LiferayプラグインはLiferayプラグインSDK内で開発されており、非常に理由からSDKと呼ばれています。

プラグインに問題はありません-SDKとコードが一緒になっているので、以下の理由がいくつかあります。

githubでプラグインのliferayリポジトリを見ると、すべてのサンプルポートレットと他のプラグインが、プラグイン(SDK)内のそれぞれのフォルダーに保存されていることがわかります。

したがって、liferayプラグイン(IDEの有無にかかわらず)を開発する場合、ベストプラクティス(私が考える唯一の効率的な方法portlets)は、フォルダー内のポートレットプロジェクト、フォルダー内のフックプロジェクトhooksなどのプラグインSDKのそれぞれのフォルダー内にプロジェクトを作成することです。。

このIDEでプラグインプロジェクト(Liferayプロジェクト)を作成するときにLiferay IDEを使用した場合は、SDKとサーバーランタイムを指定します。これにより、プラグインSDK内にプロジェクトが作成され、作成されたプロジェクト内.settings.classpath.projectファイルがコピーされます。 。eclipseが他のプロジェクトに対して通常行うように、ワークスペース内にプロジェクトを作成することはありません。

私がなんとかそれを明確に説明できたことを願っています、そしてこれはあなたが望んでいたことでした。

于 2012-08-30T13:42:06.320 に答える
0

私はすでに他の回答に非常に満足しています。これはそれらのコメントを通じて配布された可能性がありますが、別の回答でさらに構造化オプションが提供されます。

Prakash が言うように、そうするのはそれほど悪いことではありません。彼の答えに加えて、コードをワークスペース ディレクトリに置く必要はありません。Eclipse は、ファイルシステムのどこにでも喜んで配置します。したがって、Eclipse を使用している間は、コードが正確にどこにあるかを気にすることさえありません (そして、バージョン管理にチェックインする際に - ですよね? - 実際には気にする必要はありません。

Liferay の OOTB ant スクリプトを使用する場合: これらは、記述したセットアップに正確に対応しています: SDK ディレクトリで作業します。実際には悪くはありませんが、気に入らない場合は、build.xml を変更せずに作業できないことを受け入れる必要があります (Artem が示唆しているように)。

もう 1 つのオプションは、maven を使用することです。これは、sdk (および Liferay IDE 統合) もバイパスするため、ソースコードを好きな場所に配置して、あとは maven に任せることができます。

Artem の提案には難解でまれな問題がいくつかあると想像できますが (相対的な位置を暗示するときにカスタムの親テーマを参照するなど)、それは非常に小さなことだと思います。SDK が行う基本的な仮定を満たしていないことに注意してください。そのため、仮定に違反するものを変更する必要がある場合があります。これを念頭に置いておけば、これが難しすぎるとは想像できません。

もちろん、このソリューションで見逃しているのは、build.${username}.properties をインクルードする適切な処理です。${liferay.sdk.home} を定義する独自の build.properties が必要です。チームで働いていなくても大丈夫です。それ以外の場合は、これを自分で発明する (そしてコーディングする) か、すべてのチーム メンバーで構成するグローバル パラメーターに依存する必要があります。

于 2012-08-30T17:56:23.613 に答える