2017-10-05 9 views
0

私はMavenプロジェクトを持っているとはどのように/

のsrc /メイン/リソースに配置する必要がありますfile.jsonでJSONオブジェクトを記述するために必要なリソースディレクトリに

をJavaでファイルを作成するだけにファイルが存在するかどうかを確認します。作成しない場合は作成してください。あなたはこれが唯一の開発環境で動作するように起こっているsrc/main/resourcesにファイルを動的に作成している場合

public static void writeMenuJSon(String jsonParamIn) { 
    JsonParser parser = new JsonParser(); 
    JsonObject modulJson = parser.parse(jsonParamIn).getAsJsonObject(); 

    //TODO check if file exists and create file if not 

    code here ... 


    // write to file JSON object 
    try (Writer writer = new FileWriter("path to file")){ 

     Gson gson = new GsonBuilder().create(); 
     gson.toJson(modulJson, writer); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
+0

通常、 'resources'フォルダには、プロジェクトからのリソースのみが含まれ、動的に作成されたファイルは含まれません。なぜそこにファイルが必要ですか? – MiguelKVidal

+0

'src/main/resources'に書き込むことは意味がありません。なぜなら、これは後で結果のjarファイルにパッケージ化されるからです...? – khmarbaise

答えて

2

何かが完全に間違っています。 JarまたはWarを使用してコードをデプロイすると、このディレクトリはファイルシステム上に存在しません。 Jar/Warやその他のパッケージに含まれます。

あなたが上記を理解していて、それでもやりたいのであれば。そう

src/main/resources/foo.txt

でファイルを作成するプロジェクトのルートに設定されますが、IDEから自分のメインを起動すると通常の作業ディレクトリ、ファイルを作成するために、あなたの現在の作業ディレクトリに関連行きそれを行います。また、あなたは正確に言及したディレクトリにJSONファイルを書き込ん達成するために何をしようとしている

System.getProperty("user.dir"); 
+0

はい、warファイルにパッケージ化され、glassfishにデプロイされます。だからどこでこのファイルを保存すべきですか? WEB-INFディレクトリにありますか? –

+0

アプリケーションのワークスペースを作成して、アプリケーションの外部に配置する必要があります。また、アプリケーションでユーザー入力がファイルパスを選択できるようにする場合は、セキュリティの面でも考慮してください。 –

+0

正しく理解すれば、warファイルでパッケージ化してサーバーに展開した後、練習。右?しかし、プロジェクトがデプロイされて稼働しているときに、このファイルを変更する必要があります。このアプリケーションを実行しているサーバーと同じサーバーにこのファイルを置く必要がありますか?ベストプラクティスは何ですか?申し訳ありませんが私の質問は、少し愚かな点灯ビットです。 –

1

を使用して、IDEランチャーからか、実行時に、あなたの現在の作業ディレクトリを把握することができますか?

私はあなたの質問に重要な何かを逃すかもしれない

しかし:

この事を行うコードを作成することが可能であるが、私はすべてであなたがこのコードを実行しようと、それはにまともなソリューションですされているかどうかはわかりませんあなたの問題?

この "src/main/resources /"リソースを持つプロジェクト名Pをmvnパッケージ化すると、Pwar/.jarなどのパッケージに追加されますが、ディレクトリにJSONファイルはありませんコードを実行すると、それを生成するコードが実行されますが、それは何らかの醜い追加作業なしには実行されません。

このコードがこのプロジェクトに含まれている場合、このコードはプロジェクトパッケージの実行時にのみ実行されます。そして、この "src/main/resources /"がどこに書かれているのでしょうか。

+0

あなたが正しいと思います。目標は、jsonファイル内の他のモジュールメニューのリンクを保存することです。新しいモジュールがサーバーにデプロイされると自動的に生成されるはずです。可能な解決策は、このメニューをJSONファイルに保存することです。 src/main/resourcesディレクトリにあるはずだと思いました。しかしおそらく、それはどこか別の場所に保管するべきです。たとえば、WEB-INFの場合。あなたはそれについてどう思いますか? –

+0

「モジュール」とモジュールを展開することで何を意味するのでしょうか?たとえば、同じアプリケーションサーバー/サーブレットコンテナなどに配備された他のアプリへのリンクを持つ「メイン」アプリケーションが1つありますか? – pirho

+0

メニューを作成して管理するメインモジュールがあります。このメニューは、新しいサブモジュールが配備されているときにリンクがメニューで作成する必要がある場合に動的に作成する必要があります。 example_menu.jsonファイルと基本モジュールにメニューを格納するための実装方法の1つは、そこからリンクを得ることができます。すべてのモジュールは同じアプリケーションサーバー上で実行されます。 –