2018年1月31日水曜日

Versions Maven Pluginを使ってバージョン番号からSNAPSHOTを削除する

setゴール実行時にremoveSnapshotにtrueを指定することで、SNAPSHOTが削除できる。
「1.0.0-SNAPSHOT」の場合は、「1.0.0」になる。
mvn org.codehaus.mojo:versions-maven-plugin:2.5:set -DremoveSnapshot=true

2018年1月30日火曜日

Apache Maven Clean Pluginを使ってデフォルト以外のファイルを削除する

Apache Maven Clean Pluginでは、project.build.directoryなどを自動的にクリーニングしてくれるけど、それ以外のファイルをクリーニングしたい場合がある。
その場合は、下のようにconfigurationにfilesetesを指定する。

この例では、「プロジェクトディレクトリ/temp」配下の「*.log」がクリーニング対象になる。
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-clean-plugin</artifactId>
  <version>3.0.0</version>
  <configuration>
    <filesets>
      <fileset>
        <directory>temp</directory>
        <includes>
          <include>*.log</include>
        </includes>
      </fileset>
    </filesets>
  </configuration>
</plugin>

2018年1月27日土曜日

はじめてのjackson-dataformat-xml

jackson-dataformat-xmlのメモ。

使うライブラリ

compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.4'

xmlに対応したクラスの定義

@JacksonXmlRootElement(localName = "root")
public class Simple {
    
    private Child child;

    public Child getChild() {
        return child;
    }

    public void setChild(final Child child) {
        this.child = child;
    }

    @Override
    public String toString() {
        return "Simple{" +
                "child=" + child +
                '}';
    }
}

public class Child {
    @JacksonXmlText
    private String text;
    
    @JacksonXmlProperty(isAttribute = true)
    private String attr;

    @Override
    public String toString() {
        return "Child{" +
                "text='" + text + '\'' +
                ", attr='" + attr + '\'' +
                '}';
    }
}

xml→Java

XmlMapperのreadValueを使う
final String xml = "あたい";
final XmlMapper xmlMapper = new XmlMapper();

final Simple simple = xmlMapper.readValue(xml, Simple.class);
System.out.println("simple = " + simple);  // simple = Simple{child=Child{text='あたい', attr='hoge'}}

java→xml

final Simple input = new Simple();
final Child child = new Child();
child.text = "値";
child.attr = "属性";
input.child = child;
System.out.println(xmlMapper.writeValueAsString(input)); // 

kotlin data classを使う

以下を追加する。
compile 'com.fasterxml.jackson.module:jackson-module-kotlin:2.9.4'

KotlinModuleを有効化することでdata classを使えるようになる。
@JacksonXmlRootElement(localName = "r")
data class Hoge(val hoge:String)

val xmlMapper = XmlMapper()
xmlMapper.registerModule(KotlinModule())
println(xmlMapper.writeValueAsString(Hoge("fugafuga")))

2018年1月4日木曜日

[SQL Server]sequenceのSTART WITHは必ず指定する

SQL Serverでシーケンスオブジェクトを作成した場合、START WITHは指定した型の最小値となるので、START WITHは必ず指定しよう。
指定しなかった場合は、デフォルトの型がbigintなので、START WITHは-9223372036854775808となるので、想定外な値から値が採番される…

START WITHを指定しない場合

1> create sequence test 
2> go
1> 
1> select start_value from sys.sequences where name = 'test'
2> go
start_value
-----------
-9223372036854775808


START WITHを指定した場合


1> create sequence test start with 1
2> go
1> 
1> select start_value from sys.sequences where name = 'test'
2> go
start_value
-----------
1