質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.35%

【Spring】pom.xmlにprofileを定義し読み込みファイルの切り替えができない。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,102

score 15

事象

pom.xmlにデータベース接続時の値を記述してあるpropertiesファイルの読み込みを環境に合わして切り替えるように定義し、サーバを起動したら、404エラーがでてwebページにアクセスできませんでした。
解決方法を教えていただけないでしょうか?

コンソールログ

10:56:40.053 [main] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
10:56:40.194 [main] DEBUG org.springframework.web.context.support.XmlWebApplicationContext - Refreshing Root WebApplicationContext
10:56:40.372 [main] DEBUG org.springframework.ui.context.support.UiApplicationContextUtils - Unable to locate ThemeSource with name 'themeSource': using default [org.springframework.ui.context.support.ResourceBundleThemeSource@5c04ec8]
10:56:40.381 [main] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [java:comp/env/spring.liveBeansView.mbeanDomain]
10:56:40.385 [main] DEBUG org.springframework.jndi.JndiLocatorDelegate - Converted JNDI name [java:comp/env/spring.liveBeansView.mbeanDomain] not found - trying original name [spring.liveBeansView.mbeanDomain]. javax.naming.NameNotFoundException: 名前 [spring.liveBeansView.mbeanDomain] はこのコンテキストにバインドされていません
10:56:40.385 [main] DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [spring.liveBeansView.mbeanDomain]
10:56:40.386 [main] DEBUG org.springframework.jndi.JndiPropertySource - JNDI lookup for name [spring.liveBeansView.mbeanDomain] threw NamingException with message: 名前 [spring.liveBeansView.mbeanDomain] はこのコンテキストにバインドされていません. Returning null.
10:56:40.412 [main] INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext initialized in 350 ms
10:56:41.082 [main] DEBUG org.terasoluna.gfw.web.logging.mdc.MDCClearFilter - Filter 'MDCClearFilter' configured for use
10:56:41.082 [main] DEBUG org.terasoluna.gfw.web.logging.mdc.XTrackMDCPutFilter - Filter 'XTrackMDCPutFilter' configured for use
10:56:41.224 [main] DEBUG org.springframework.web.filter.CharacterEncodingFilter - Filter 'CharacterEncodingFilter' configured for use

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example.taskmanagement</groupId>
    <artifactId>taskmanagement</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <parent>
        <groupId>org.terasoluna.gfw</groupId>
        <artifactId>terasoluna-gfw-parent</artifactId>
        <version>5.5.1.RELEASE</version>
    </parent>

    <name>TERASOLUNA Server Framework for Java (5.x) Web Blank Project (MyBatis3)</name>
    <description>Web Blank Project (MyBatis3) using TERASOLUNA Server Framework for Java (5.x)</description>
    <url>http://terasoluna.org</url>
    <inceptionYear>2013</inceptionYear>
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>manual</distribution>
        </license>
    </licenses>
    <organization>
        <name>TERASOLUNA Framework Team</name>
        <url>http://terasoluna.org</url>
    </organization>

    <profiles>
        <profile>
            <id>xtest</id>
            <properties>
                <maven.test.skip>true</maven.test.skip>
            </properties>
        </profile>
        <profile>
            <id>local</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <env>local</env>
            </properties>
        </profile>
        <profile>
            <id>heroku</id>
            <properties>
                <env>heroku</env>
            </properties>
        </profile>
    </profiles>
    <build>
        <filters>
            <filter>src/main/resources/META-INF/spring/taskmanagement-infra.${env}.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/resources/META-INF/spring</directory>
                <filtering>true</filtering>
                <includes>
                    <include>taskmanagement-infra.${env}.properties</include>
                </includes>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>${org.codehaus.mojo.build-helper-maven-plugin.version}</version>
                    <executions>
                        <execution>
                            <id>add-source</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>src/generated/java</source>
                                </sources>
                            </configuration>
                        </execution>
                        <execution>
                            <id>add-resource</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>add-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>src/generated/resources</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${maven-war-plugin.version}</version>
                    <configuration>
                        <warName>${project.artifactId}</warName>
                        <archive>
                            <addMavenDescriptor>false</addMavenDescriptor>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

src配下のツリー構造(一部)

src
├─main
    ├─resources
       └─META-INF
       ├─dozer
       │      .gitkeep
       │      
       ├─mybatis
       │      mybatis-config.xml
       │      
       └─spring
              applicationContext.xml
              spring-mvc.xml
              spring-security.xml
              taskmanagement-codelist.xml
              taskmanagement-domain.xml
              taskmanagement-env.xml
              taskmanagement-infra.heroku.properties
              taskmanagement-infra.local.properties
              taskmanagement-infra.xml

試したこと

以下のサイトを参考にweb.xmlにcontext-parmaを追加したのですが、だめでした。
https://stackoverrun.com/ja/q/6507414

また、プロファイルでpropertiesファイルを切り替える処理を追加していない状態に戻し、起動したところ問題なく動作してるのは確認したため、pomの記述方法が間違っていると思うのですが、いろいろサイトをみましたが、解決方法がわかりませんでした。

補足

フレームワークはTERASOLUNAを使っているのですが、それが何かの原因の要素にもなっているのでしょうか?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

mavenはビルド時に<resources>タグの<directory>タグで定義しているパスの配下をコピーする仕様でかつ、<include>タグで指定したファイルのみコピーする仕様であったためpropertiesファイル以外のxmlファイルなどのコピーができていなかったのが原因であったとわかりました。(mavenの仕様についての自分の理解が上記の内容であっているかは少し不安ですが)
なので、<directory>のパスをsrc/main/resourcesにし<include>タグを排除すると問題なく起動できました。
あまり理解せずに使っていたことがあだになりました(笑)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る