Dev Study
← 解説「最小プロジェクトのファイル一覧」に戻る

サンプルコードで身につける: 最小プロジェクトのファイル一覧

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1雛形の tree(Maven 版・隠しファイル込み)

で 4.1.1、Java 25、依存 web を選んで作った雛形の全ファイルです。強調した3つが、自分で書き足していくファイルです。 と templates は空のディレクトリです。

$ tree -a maven(2026-10-01 に取得した zip を展開)コマンド出力
maven
├── .gitattributes
├── .gitignore
├── .mvn
│ └── wrapper
│ └── maven-wrapper.properties
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── DemoApplication.java
│ └── resources
│ ├── application.properties
│ ├── static
│ └── templates
└── test
└── java
└── com
└── example
└── demo
└── DemoApplicationTests.java
 
16 directories, 10 files

2雛形の pom.xml を読む

雛形の の全文です(54行)。強調したのは、親の指定、依存、Spring Boot のです。依存に版が書かれていないのは、親の が版を決めるからです。license や scm の空のタグは、親からする項目を打ち消すためのものです。

pom.xml(start.spring.io の Maven 雛形。全文)設定ファイル
<?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>4.1.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description/>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>25</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc</artifactId>
</dependency>
 
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webmvc-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
 
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
 
</project>

3mvnw が実際にやったこと

の入っていない だけの環境で -v を実行した出力です。設定ファイルに書かれた版の Maven を取ってきて展開し、それを実行しています。Falling back to use Java to download の行は、この実行環境に や wget が無かったために出たものです。

maven-wrapper.properties と、$ ./mvnw -v(JDK 25 のみの環境)コマンド出力
$ cat .mvn/wrapper/maven-wrapper.properties
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip
 
$ ./mvnw -v
Couldn't find MAVEN_HOME, downloading and installing it ...
Downloading from: https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.16/apache-maven-3.9.16-bin.zip
Downloading to: /tmp/tmp.dxTu2qmV8U/apache-maven-3.9.16-bin.zip
Falling back to use Java to download
- Compiling Downloader.java ...
- Running Downloader.java ...
...
Found extracted Maven distribution directory: apache-maven-3.9.16
Apache Maven 3.9.16 (2bdd9fddda4b155ebf8000e807eb73fd829a51d5)
Maven home: /root/.m2/wrapper/dists/apache-maven-3.9.16/56ba1f9f
Java version: 25.0.4.1, vendor: Eclipse Adoptium, runtime: /opt/java/openjdk

4NestJS の雛形と並べる

nest new の雛形のファイル(公式ドキュメントが挙げる主要ファイル)と対応づけた表です。対応しない行が要点です。app.module.ts に当たるファイルは Spring Boot にありません。依存の実体は、node_modules と違ってプロジェクトの外に置かれます。

Spring Boot の雛形と NestJS の雛形の対応表
Spring Boot の雛形 (Maven) NestJS の雛形 (nest new) 対応しない点
pom.xml package.json pom.xml はビルドの定義も兼ねる
mvnw / mvnw.cmd / .mvn/wrapper/ (対応するファイルは無い) Maven は Java に同梱されないので雛形が持つ
src/main/java/.../DemoApplication.java src/main.ts Java 側はパッケージ名の階層の下に置く
(無い) src/app.module.ts Boot は起動クラスのパッケージ以下を自動で探す
src/main/resources/application.properties (公式の一覧の5ファイルに無い) Boot が既定で読みに行く置き場所
src/test/java/.../DemoApplicationTests.java src/app.controller.spec.ts Java はテストを src/test に分ける
target/ (ビルドで出来る) dist/ (ビルドで出来る) target/classes は .class、dist は JS
~/.m2/repository (プロジェクトの外) node_modules/ (中) Maven は全プロジェクトで共有する

5Gradle 版の雛形では何が変わるか

同じ条件で を選ぶと、pom.xml の代わりにこの が入ります。依存の指定は pom.xml と同じです。src 以下のファイルの配置は Maven 版と完全に同じでした。Gradle は、ソースの置き場所について Maven の規約を借りていると公式ドキュメントに書いています。

build.gradle(start.spring.io の Gradle 雛形。全文)設定ファイル
plugins {
id 'java'
id 'org.springframework.boot' version '4.1.1'
id 'io.spring.dependency-management' version '1.1.7'
}
 
group = 'com.example'
version = '0.0.1-SNAPSHOT'
 
java {
toolchain {
languageVersion = JavaLanguageVersion.of(25)
}
}
 
repositories {
mavenCentral()
}
 
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
 
tasks.named('test') {
useJUnitPlatform()
}

図やコードに出てくる用語(タップで説明)