読者です 読者をやめる 読者になる 読者になる

Web系開発メモ

Java, SpringBoot, JavaScript, CSS, HTML などの記事を書いています。

POML開発:2016年10月30日

POML

最近、JavaPOML というツールを開発しています。POML は「POM(pom.xml)’s Minimal Language」の略で、

  • POML ファイル(pom.poml)の記法
  • POML ファイルを Mavenpom.xml に変換するツール

で構成されています。

POML ファイルの例

今は2つのセクションで構成されていて、--- より上が Config Section で、下が Layout Section です。

pkg=com.example:demo:0.0.1:jar
depends=
  junit:junit:4.12:test,
  org.assertj:assertj-core:3.2.0:test
property=project.build.sourceEncoding:UTF-8
compiler=source:1.8, target:1.8
---
{{#model4 }}
  {{pkg }}
  {{depends }}
  {{property }}
  <build>
    <plugins>
      {{compiler}}
    </plugins>
  </build>
{{/model4}}

上の設定を使って、下のプレースホルダ {{key}}XML に変換していく感じです。下は、XML 要素も記述できます。

プレースホルダに含まれる空白は、XML になるとき「改行」に変換されます。

生成される pom.xml

poml コマンドで変換すると、下の pom.xml が生成されます。

<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</groupId>
  <artifactId>demo</artifactId>
  <version>0.0.1</version>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.assertj</groupId>
      <artifactId>assertj-core</artifactId>
      <version>3.2.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

まとめ

まだまだ開発途中で微妙なところが多いんですが(英語も・・・)、ご興味があれば GitHub なども見て頂けると嬉しいです。

また何かあれば、このブログでも書いていこうかと思っています。