2011-10-31 18 views
3

intellijでmavenを使用する単純なスプリングmvcアプリケーションがあります。Mavenを使用したIntelliJでのローカル作成とプロダクション

生産と開発の両方で別々のファイルを作成するにはどうすればよいですか?

nhibernateのための生産と開発のmysql接続文字列を設定したいとしますか?

ビルド時に、構成情報を取得するために正しいファイルが使用されるようにするにはどうすればよいですか? (そしてファイルの命名規則に関するアドバイス)

答えて

2

これはかなり簡単です。

まず、あなたのpom<project>の下でカップルのプロファイルを作成します。

<profiles> 
    <profile> 
    <id>build-dev</id> 
    <activation> 
     <!-- <activeByDefault>true</activeByDefault> --> 
     <property> 
     <name>env</name> 
     <value>dev</value> 
     </property> 
    </activation> 
    <properties> 
     <config.name>config.dev.properties</config.name> 
    </properties> 
    </profile> 
    <profile> 
    <id>build-prod</id> 
    <activation> 
     <property> 
     <name>env</name> 
     <value>prod</value> 
     </property> 
    </activation> 
    <properties> 
     <config.name>config.prod.properties</config.name> 
    </properties> 
    </profile> 
</profiles> 

その後、今、あなたはちょうどあなたがmvnを実行するときに、あなたがしたいプロファイルを指定maven-antrun-plugin

<plugins> 
    <plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
     <phase>prepare-package</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <tasks> 
      <delete file="${project.build.outputDirectory}/config.properties"/> 
      <copy file="src/main/resources/${config.name}" tofile="${project.build.outputDirectory}/config.properties"/> 
      <delete file="${project.build.outputDirectory}/config.dev.properties"/> 
      <delete file="${project.build.outputDirectory}/config.prod.properties"/> 
      </tasks> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

を使用しています。デフォルトを使用する場合は、コメントを外して次の場所に配置します。

<!-- <activeByDefault>true</activeByDefault> --> 

セクションは、デフォルトで必要なプロファイルにあります。つまり、どちらも指定されていなければ、ビルドはantタスクで失敗します。

+0

トピックの外に出ていますが、毎秒15Kのリクエストを受け取ることに関するあなたの別の投稿を読んでいます。あなたに連絡できるメールがありますか?とても好奇心が強い! – codecompleting

2

これについては、いくつかの方法があります。

一般に、DB接続文字列のようなものはプロパティファイルに入り、Spring XML設定ファイルではPropertyPlaceholderConfigurerを使用して置き換えられます。 1つの常識は、-D起動パラメータ、ユーザー名、マシン名などを検索するカスタム実装を作成して、実際に使用するプロパティファイルを決定することです。

同じトリックはXmlWebApplicationContextの実装を作成することによって、同様Spring構成ファイルに使用することができます(?私はサブクラスに何を思い出すことはできません)を追加するデフォルトgetConfigLocationsを変更/追加している、と言う、ファイルがで始まりますユーザーまたはマシン名、-D起動パラメータの値などです。

Javaを使用している場合、Hibernateを使用している場合は、NHibernateを使用していません。

編集ブライアンのアプローチは、それらの「方法のトン」の1つです。ビルドせずに構成することができます。すなわち、任意の「ローカル」条件などを基にダイナミックに設定することができます。 。

+0

ええと、私は "それをシンプルに、愚かにしてください"という大ファンです。私は実際には元々は別の設定ファイルを扱うための推奨方法としてmavenサイトにあることを発見しました。今でもそれを見つけるように見えることはできません。 –

+0

@BrianRoachあなたのニーズは決して変わらない限り、開発者は独自の設定を行う必要はなく、限られた設定しか展開していません。私はそれが実生活で起こっていないが、YMMV。 1つの方法で他のものを自明に無効にすることができれば、私のチームは時間を節約できました。これらのサブクラスは、文字通り半ダース/ダースラインです。 –

+0

私は他に何もする必要がないことを知りました。 20年後。つまり、私はウェブやデスクトップのものはしませんし、一般的には、特定のアプリケーションでかなり狭いパラメータセットで作業します。私はマイレージがキロメートルであるかもしれないと推測しています;) –

関連する問題