2017-09-07 9 views
1

intellijがどのようにgradleプロジェクトとresourcesフォルダーを処理しているかを理解するのに問題があります。ファイルを作成するためのintellij、gradleプロジェクトとresourcesフォルダーと論理ルート

私は、デフォルトのGradleのプロジェクトは、そのモジュールの「グループ」、および

src/main/resourcesフォルダは、「リソースフォルダ」として示したモジュール群で探してモジュールを作成した(しかし、それはdoesntの作成しましたグルーヴィー/ Javaの/リソースはすべて灰色でスタンドアロンモジュール、)

enter image description here

になるように並べ替えて、一般的に、コードをコンパイルするときに動作するようです。

しかし私はあなたを実行し、この

File newFile = new File ("resources/temp.txt") 
def fpath = newFile.toURL() 
if (!newFile.exists()) { 
    println "creating new $fpath file " 
    newFile.createNewFile() 
} 

のようなグルーヴィーなスクリプトでファイルを作成するために、しかししようとしたファイルは、相対的なルートを持っているように見えるこの

creating new file:/D:/Intellij - Azure/quickstart-java/graph/src/main/groovy/playpen/resources/temp.txt file 
Caught: java.io.IOException: The system cannot find the path specified 
java.io.IOException: The system cannot find the path specified 
    at java_io_File$createNewFile$1.call(Unknown Source) 
    at playpen.TinkerPop-Example.run(TinkerPop-Example.groovy:47) 

のようなビットでそれが失敗し、これを実行し.../src/main/groovy/playpenました私のスクリプトはどこにありますか? src/main/groovy/playpen/resources/なので、失敗する

File("/resources/temp.txt") and look at the URL it shows as D:\ resources \ temp.txtは、スクリプトが定義されている場所と同じドライブにデフォルトで使用されます。

リソースプレフィックスを削除した場合 - ファイルがplaypenで作成されます - 再びルートはソースプログラムスクリプトと同じです。

私がしたいのは、 'resources'フォルダからファイルを読むことですが、絶対ファイルパスに移動しない限り、 'resources'フォルダは無視され、groovyソースフォルダだけが表示されます。

ので、たとえば、私はresourcesフォルダにTEMP.TXTをコピーして、それだけでスクリプトが実行され、表示されませんベビーサークルパッケージの新しいTEMP.TXTを作成し、この

File newFile = new File ("temp.txt") 
def fpath = newFile.toURL() 
if (!newFile.exists()) { 
    println "creating new $fpath file " 
    newFile.createNewFile() 
} else { 
    println "reading file at $fpath" 
} 

を実行する場合「リソース」フォルダ

からコピーので、「ファイル名」のどのような形式のリソース」フォルダが自然にファイル名を解決するために使用されるように、私は使用しない - したい場合も同様に絶対ファイル名に

を使用することなく、 File programaticalを作成するそれを保存し、その場所をスクリプトの実行場所である 'resources'フォルダに保存します。

私はここで何か基本的なものを見当たりませんし、読み書き方法を理解していませんリソースフォルダ。

誰かが、彼らはsrc/main/resourcesディレクトリIDが

答えて

0

はこの1人の上のブルートフォースと無知になってしまった方法を知っていることは非常に満足してプロジェクトに関連しているように私はプログラム的にファイルに名前を付ける方法を説明することができれば - 持って誰かよりスマートな答えですが、これは機能しているようです。私は働いているいくつかのコードを少し微調整。 (1)最初はSystem.getPropertyを使用して、IDE /プロジェクトのルートを検索します(「ユーザー -

私はグルーヴィーここではなく、Javaの(ただあまり定型ノイズ)、そして素敵なファイルグルーヴィーな方法

の手順を使用しています.dir ") (2) 'this'の現在のリソースファイルを取得する - あなたがideから実行するクラス (3)リソースが$ root/out/test/..にあるかどうかを確認するdir - それ以外の場合は通常のコードです。 (4)src/main/resourcesまたはsrc/test/resources /内の 'location'を修正するようresourcePathを設定する - このスタブから残りのファイルを作成する (5)ファイルが存在するかどうかを確認する - もしあれば、これを削除して書き換えます(あなたはこれをもっときれいにすることができます) (6)ファイルを作成してその内容を記入してください

job doneこのファイルは、期待通りに現れるはずです。これを行うためにもっときれいな方法を取ることを幸せにする - しかし、他の誰かのためにこれは、トリックを行うように思われる