2016-04-12 8 views
0

私はMavenと共にIntelliJを使用しています。 logback.groovyやいくつかのプロパティファイルなどの外部設定フォルダ(つまり、jarファイルには含まれていない)を作成したいとします。このフォルダはmavenによってクラスパスに追加されます(maven-jar-plugin経由、Maven - how can I add an arbitrary classpath entry to a jar?参照)。しかしIntelliJの内部からプロジェクトを実行すると、このクラスパスのエントリは追加されず、対応するフォルダの内容は見つかりません。ランタイムモジュール依存としてフォルダを追加すると問題は解決しますが、きれいに見えません。クラスパスエントリがIntelliJに追加されるようにmavenを構成する方法はありますか?それが不可能な場合は、どういうわけか依存関係に頼らずにクラスパスエントリを実行に追加できますか? eclipseでは、実行コンフィギュレーションに任意のクラスパスエントリを追加することができました。私はちょうどIntelliJのいくつかのメニューが欠けていると確信しています。Mavenを使用したIntelliJ:リソースをコピーせずにクラスパスエントリを追加してください

リソースが(mavenまたはIntelliJのいずれかで)リソースとしてマークすることはオプションではないことに注意してください。フォルダの内容はtarget/classesにコピーされ、jarにバンドルされます。

EDIT:なぜ別のフォルダの理由:外部ライブラリ(例えばlogback)は、(私が理解する限り)介入の可能性なしに直接クラスパスから依存関係を読み込みます。私は非常に多くの場所に設定ファイルの負荷を置くことを嫌い、代わりにできるだけ集中するようにしたい。

フォローアップ質問:ここでクラスパスの概念を誤って使用していますか?

答えて

1

は、私はあなたの設定がどのようなものかわからないんだけど、次のいずれかを試みることができる:

  1. あなたはRun Configuration > JDK Settings > VM Options-cpフラグを経由してクラスパスを更新することができます。 このようにenv変数を使用することは許可されていないようですが、これは難しいことです。アイデアランナーのアプリケーションcpとcpエントリの両方を指定する必要があります。

  2. IDEAのmakeの代わりに実際にMavenを実行することができます。 Run Configuration > Before Launchを参照して、デフォルトのMakeを削除し、それをMavenの目標(たとえばclean compile)に置き換えてください。

+0

1. '-cp'は何かを追加するのではなく、クラスパスを設定するのですか?そうではありませんか? 2.それは良い提案です、ありがとうございます。 – incaseoftrouble

+0

@Megge、cpの場合、classpathにCLASSPATH = $ CLASSPATH + new_cp_entryを追加すると、古いトリックを使うことができます。 – arghtype

+0

ちょうど好奇心から:私はこのケースでどのくらい正確にそれをするだろうか?申し訳ありませんが、ちょっと疑わしい質問のようですが、 '$ CLASSPATH'はVMオプションに追加されても解決されません。 – incaseoftrouble

関連する問題