Spring Data JPA / Spring Boot / Log4j2を備えたMaven複数モジュール

user182410:

Spring Data JPAを使用するSpringプロジェクトを複数のモジュールに分割しています

  • プロジェクトルートフォルダー

    • プロジェクトデータ
      • src / main / java / project.test / App.java
      • src / main / resources / log4j2.xml
      • pom.xml
    • project-ui
      • src / main / java / project.test / App.java
      • src / main / resources / log4j2.xml
      • pom.xml
  • pom.xml

project-root-folder / 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>project.test</groupId>
    <artifactId>testapp</artifactId>
    <version>0.0.1</version>
    <name>testapp </name>
    <description>...</description>

    <modules>
        <module>project-data</module>
        <module>project-ui</module>
    </modules>

    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>13</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

project-root-folder / project-data / 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">
    <parent>
        <groupId>project.test</groupId>
        <artifactId>testapp</artifactId>
        <version>0.0.1</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>project-data</artifactId>

    <properties>
        <spring-boot.repackage.skip>false</spring-boot.repackage.skip>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

myproject-root-folder / project-ui / 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">
    <parent>
        <groupId>project.test</groupId>
        <artifactId>testapp</artifactId>
        <version>0.0.1</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>project-ui</artifactId>

    <dependencies>
        <dependency>
            <groupId>project.test</groupId>
            <artifactId>project-data</artifactId>
            <version>0.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>11.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>11.0.2</version>
        </dependency>
        <dependency>
            <groupId>net.rgielen</groupId>
            <artifactId>javafx-weaver-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>build-info</id>
                        <goals>
                            <goal>build-info</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

つながるproject-data / app.javaを実行したい

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/kk/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.12.1/log4j-slf4j-impl-2.12.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/kk/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4j
    at org.apache.logging.slf4j.Log4jLoggerFactory.validateContext(Log4jLoggerFactory.java:49)
    at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:39)
    at org.apache.logging.slf4j.Log4jLoggerFactory.newLogger(Log4jLoggerFactory.java:30)
    at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:54)
    at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
    at project.test.App.<clinit>(App.java:11)

クリーンなソリューションがいいでしょう。ありがとうございました。

上記のproject-root-folder / project-data / pom.xmlに類似したpomを使用して、新しく生成された単一のプロジェクトのINFO、そのプロジェクトは正常に動作しています...

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>
        <dependency>
            <groupId>com.getsentry.raven</groupId>
            <artifactId>raven-log4j2</artifactId>
            <version>7.8.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.jeasy</groupId>
            <artifactId>easy-random-core</artifactId>
            <scope>test</scope>
            <version>4.1.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
Pieterjan Deconinck:

クラスパス上のロガーには複数の依存関係があります。1つ(またはそれ以上)は、POMファイルで除外して除外する必要があります。一部のSpring Bootスターターでは、これはすでに例で当てはまります。

クラスパス上にある(直接および推移的な)依存関係を確認するには、次のMavenコマンドを実行します。

mvn dependency:tree

このリストでは、ロガー依存関係が1つだけであることを確認してください。

一見では、私はあなたのために除外を追加する必要がありますだと思うspring-boot-starter-loggingspring-boot-starter-test

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Gradle、Spring Boot、spring-boot-starter-data-jpaアップグレード

分類Dev

Spring Boot jpa NoClassDefFoundError

分類Dev

Spring Boot JPA findByUuid

分類Dev

Spring Data JPAをDataNucleus(GAE)と連携させる(Spring Boot)

分類Dev

Spring Boot + Spring Batch + Spring JPA

分類Dev

Spring Boot + Spring Data JPA + Atomikos +複数のデータベース構成

分類Dev

Spring Data JPA @OneToMany

分類Dev

Spring Data JPA findAll()またはfindbyId()がSpring Bootで誤った値を返す

分類Dev

Spring Data JPA findAll()またはfindbyId()がSpring Bootで誤った値を返す

分類Dev

JOOQを使用したSpring BootとSpring Data JPAの技術的な違い

分類Dev

Spring Boot JPA-SQLIntegrityConstraintViolationException

分類Dev

Spring Boot JPA Query for not null

分類Dev

悲観的ロックがSpring Boot Data JPAを機能しない

分類Dev

Spring Boot + Spring Data JPAにデータが挿入されていませんか?

分類Dev

Spring Boot + Spring Data JPAにデータが挿入されていませんか?

分類Dev

Spring Boot + Spring Data JPA + Spring Data ElasticSearch: エラスティックは結果を返しません

分類Dev

Spring Boot 2JPAを使用したDefaultComponentSafeNamingStrategy

分類Dev

Spring Boot:Spring-boot-starter-data-jpa依存関係を追加するときのエラー

分類Dev

spring-boot-starter-jpaを使用したQuerydslPredicate

分類Dev

spring-data-geode用のspring-boot-starter-data-jpaの互換バージョンは何ですか?

分類Dev

Spring Boot JPA Postresqlを使用したdata.sqlがロードされない

分類Dev

Spring + hibernate versus Spring Data JPA: Are they different?

分類Dev

Spring + hibernate versus Spring Data JPA: Are they different?

分類Dev

Spring + hibernate versus Spring Data JPA: Are they different?

分類Dev

Spring Data JPA Closed Connection

分類Dev

Spring Data JPA Lazy Loading

分類Dev

Spring Jpa Data、Pageable、Pagerequest

分類Dev

Spring Jpa Data、Pageable、Pagerequest

分類Dev

Spring Data JPA - Specifications and Querydsl

Related 関連記事

  1. 1

    Gradle、Spring Boot、spring-boot-starter-data-jpaアップグレード

  2. 2

    Spring Boot jpa NoClassDefFoundError

  3. 3

    Spring Boot JPA findByUuid

  4. 4

    Spring Data JPAをDataNucleus(GAE)と連携させる(Spring Boot)

  5. 5

    Spring Boot + Spring Batch + Spring JPA

  6. 6

    Spring Boot + Spring Data JPA + Atomikos +複数のデータベース構成

  7. 7

    Spring Data JPA @OneToMany

  8. 8

    Spring Data JPA findAll()またはfindbyId()がSpring Bootで誤った値を返す

  9. 9

    Spring Data JPA findAll()またはfindbyId()がSpring Bootで誤った値を返す

  10. 10

    JOOQを使用したSpring BootとSpring Data JPAの技術的な違い

  11. 11

    Spring Boot JPA-SQLIntegrityConstraintViolationException

  12. 12

    Spring Boot JPA Query for not null

  13. 13

    悲観的ロックがSpring Boot Data JPAを機能しない

  14. 14

    Spring Boot + Spring Data JPAにデータが挿入されていませんか?

  15. 15

    Spring Boot + Spring Data JPAにデータが挿入されていませんか?

  16. 16

    Spring Boot + Spring Data JPA + Spring Data ElasticSearch: エラスティックは結果を返しません

  17. 17

    Spring Boot 2JPAを使用したDefaultComponentSafeNamingStrategy

  18. 18

    Spring Boot:Spring-boot-starter-data-jpa依存関係を追加するときのエラー

  19. 19

    spring-boot-starter-jpaを使用したQuerydslPredicate

  20. 20

    spring-data-geode用のspring-boot-starter-data-jpaの互換バージョンは何ですか?

  21. 21

    Spring Boot JPA Postresqlを使用したdata.sqlがロードされない

  22. 22

    Spring + hibernate versus Spring Data JPA: Are they different?

  23. 23

    Spring + hibernate versus Spring Data JPA: Are they different?

  24. 24

    Spring + hibernate versus Spring Data JPA: Are they different?

  25. 25

    Spring Data JPA Closed Connection

  26. 26

    Spring Data JPA Lazy Loading

  27. 27

    Spring Jpa Data、Pageable、Pagerequest

  28. 28

    Spring Jpa Data、Pageable、Pagerequest

  29. 29

    Spring Data JPA - Specifications and Querydsl

ホットタグ

アーカイブ