HTMLファイルとJavaファイルが別のフォルダにある例はあるのだろうか。
6 に答える
リソース ストリームの仕組みに慣れていない限り、別のページ ディレクトリを使用することはお勧めしません。
私が見た wicket プロジェクトの大部分は、ソース ディレクトリにクラス ファイルと html ファイルを保持しています。私は自分でそれらを分離しようとしましたが、画像などの他のリソースを手に入れるのは面倒であることがわかりました。そのため、それらのリソースをパッケージディレクトリに配置することになりました-最終的に、リソースをいくつかの異なる場所に配置しましたが、すべてをパッケージディレクトリに配置するよりも混乱しました。
そうは言っても、html テンプレートを別のフォルダーに配置するために使用したコードは次のとおりです。アプリケーション クラスの Init() に追加する必要があります。
IResourceSettings resourceSettings = getResourceSettings();
resourceSettings.addResourceFolder("pages"); //the full path to your folder, relative to the context root
resourceSettings.setResourceStreamLocator((IResourceStreamLocator) new PathStripperLocator());
https://cwiki.apache.org/confluence/display/WICKET/Control+where+HTML+files+are+loaded+fromには、これに関するチュートリアルがあります。
私は(上記のユーザーが指摘しているように)Mavenを使用し、通常はすべての.htmlページをsrc/main/resources/same/package/name/as/corresponding/java/file
設計者はresourcesフォルダーから基本パッケージをチェックアウトでき、すべての.javaファイルに混乱することはありません(さらに重要なことに、誤って変更しないため)。
興味があればメーリングリストに投稿しました。
私は、HTML ファイルをsrc/main/resources
フォルダー内に置くのが好きではありません。これを処理し、バージョン管理とプロジェクト内で明確に分離する最も簡単な方法は、perilandmishap によってリンクされた Wicket 記事の最後のセットアップを使用することだと思います。
<project>
[...]
<build>
<resources>
<resource>
<filtering>false</filtering>
<directory>src/main/html</directory>
</resource>
</resources>
[...]
</build>
[...]
</project>
これで、すべての HTML ファイルが新しい別の HTML フォルダーに配置されますが、Java クラスとマージされたままになります。HTML フォルダー内ではパッケージの命名規則を引き続き使用することを覚えておいてください。つまり、src/main/html/com/your/package
Java および html ウィケット ソース ファイル用に別のフォルダーを使用しますが、ant ビルド プロセスは html を Web アプリのクラス フォルダーにコピーするので、ウィケット リソース設定をセットアップしなければならないという問題を回避できます。
私の基本的なbuild.propertiesは
web.root = ${project.home}/web
web.java.dir = ${web.root}/java
web.html.dir = ${web.root}/html
war.root = ${project.home}/war
web.inf.dir = ${war.root}/WEB-INF
war.lib.dir = ${web.inf.dir}/lib
war.classes.dir = ${web.inf.dir}/classes
wicket.version = 1.3.5
wicket.jar = ${war.lib.dir}/wicket-${wicket.version}.jar
wicket-extend.jar = ${war.lib.dir}/wicket-extensions-${wicket.version}.jar
wicket-spring.jar = ${war.lib.dir}/wicket-spring-${wicket.version}.jar
そして、コンパイル/アセンブル Ant ターゲットは次のようになります
<target name="compile-web">
<path id="wicket.build.classpath">
<filelist>
<file name="${wicket.jar}"/>
<file name="${wicket-extend.jar}"/>
<file name="${wicket-spring.jar}"/>
<file name="${externaljars.path}/spring/2.5.6/spring.jar"/>
</filelist>
</path>
<javac destdir="${war.classes.dir}" classpathref="wicket.build.classpath"
debug="on" srcdir="${web.java.dir}">
<include name="**/*.java"/>
</javac>
</target>
<target name="assemble-war" depends="compile-web">
<copy todir="${war.classes.dir}" overwrite="true">
<fileset dir="${web.html.dir}"/>
</copy>
<delete file="${dist.dir}/validationservice.war"/>
<war destfile="${dist.dir}/validationservice.war" webxml="${web.inf.dir}/web.xml" basedir="${war.dir}">
</war>
</target>
Java ファイルと HTML ファイルを同じフォルダーに入れます。これにより、Java クラスに対応する HTML ファイルを簡単に選択できるようになります。コンポーネントの HTML ファイルは、そうでなければ Java で (Swing のように) 記述される一種の UI 記述と考えてください。
これは、Maven を使用してプロジェクトを管理することが非常に優れている領域の 1 つです。Maven にはクラスパスに含まれる 2 つの場所があるため、Java ソースと HTML ファイルを論理的に分離しても、同じパッケージ構造を維持できます。Java コードは src/main/java に入り、HTML は src/main/resources に入ります。コードをビルドまたは実行すると、これらの場所の両方がクラスパスに追加されます。
Maven があなたに向いていない場合、おそらくこのアイデアは、使用しているどの環境にも適用できます。