Maven POM XMLからJSON Schemaを生成する
依存関係配列、ビルド設定のネスト、Javaプロジェクトで使用されるプロパティセクションを持つMaven POMファイルからJSON Schemaを推論します。
Real-World XML
詳細な説明
Maven POM.xmlからJSON Schemaへ
Maven POM(Project Object Model)ファイルはJavaプロジェクト設定の基盤です。POM XMLをJSON Schemaに変換することは、バリデーション、ツーリング、設定管理に有用です。
POMの例
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<properties>
<java.version>17</java.version>
<spring.version>6.1.0</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>5.10.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
スキーマの主要な観察
- 数値としてのバージョン:
<modelVersion>4.0.0</modelVersion>はnumberとして検出され、1.0.0のようなセマンティックバージョンも小数形式のためnumberとして検出される - プロパティセクション:
<java.version>17</java.version>はinteger型を生成 - 依存関係配列: 複数の
<dependency>要素が配列を形成 - 依存関係アイテムスキーマ: すべての依存関係フィールドが統一スキーマにマージされる
生成される依存関係スキーマ
{
"dependency": {
"type": "array",
"items": {
"type": "object",
"properties": {
"groupId": { "type": "string" },
"artifactId": { "type": "string" },
"version": { "type": "number" },
"scope": { "type": "string" }
},
"required": ["groupId", "artifactId", "version", "scope"]
}
}
}
POM固有の考慮事項
- Maven POMはbuild、plugins、profilesなどの既知のセクションを持つ明確に定義された構造です
- 生成されるスキーマはサンプルに存在するセクションをカバーします
- 包括的なスキーマには、すべてのセクションが含まれるPOMを貼り付けてください
- ドット付きプロパティ名(
java.version)は単一のプロパティ名として扱われます
POMを超えて
同じアプローチは他のJava/JVM設定XMLファイルにも機能します:Gradle設定、Spring XML beans、Hibernateマッピングファイル、web.xml、Log4j設定など。
ユースケース
POMファイルバリデーター、Mavenリポジトリツール、依存関係管理システムを構築する場合。スキーマにより、処理前にPOMファイルが必要な構造を含んでいることをバリデーションしたり、POM操作ツール用のTypeScript型を生成できます。