u-ryo's blog

various information for coding...

Category: Gradle

Gradlew Stopped

| Comments

実に久し振りにこのblogを書こうとして、

1
./grainw create-post 'some title'

としたら、gradle-1.8.jarを取りに行って404 not found食らって動きません。 このgrainって古いしもう更新止まってるし、先見の明なかったなぁということなんですが、もうちょっと本気で原因究明です。 https://services.gradle.org/distributions/ はあるのになぜ404? と思ったら、http://...で取りに行ってました。gradlewのgradleが古すぎる? grainwのどこで止まってるか、debug print入れて割り出すと、./gradlew gendepsでした。これをversion 6.8.1のgradleで手動でやってみる(gradle gendeps)と、build.gradleline: 78で止まります。なんで?と思って調べると、「Cannot add task 'wrapper' as a task with that name already exists.」が出たにあった通り、でした。

1
task wrapper(type: Wrapper) {

1
wrapper {

にすれば動きました。良かった。 gradle wrapper./gradlewを更新して、./grainwも復活しました。

Unit Test on Jhipster

| Comments

JHipsterでのunit testでいくつかハマったのでメモ。

  • unit test実行はgradle test

  • 単一test classを指定するにはgradle test --tests FQDN.class.name

  • test class内のlog.debug(...)を出力するには、build.gradletest.testLogging.showStandardStreams = trueを記述し、またsrc/test/resources/application.ymlに以下を記述(src/main/resources/application-dev.ymlには記述あり)

    1
    2
    3
    4
    5
    
    logging:
        level:
            ROOT: DEBUG
            bz.mydns.walt.canmatch: DEBUG
            io.github.jhipster: DEBUG
    

  • test classにおいてRESTで認証したuserを表したい時には@WithMockUser(import org.springframework.security.test.context.support.WithMockUser;)

  • testされる側のREST methodでは、java.security.Principalを勝手に引数に加えることでlogin userを取得出来、それをtestする場合にはtest classのMockMvcrestUserInfoMockMvc.perform(post("/api/user-infos")...)などとする時にorg.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.userを使って.user("foo")とすると、認証された"foo"というuserでのaccessをmock出来るが、org.springframework.security.core.context.SecurityContextHolder.getContext().getAuthentication()というstatic methodでjava.security.Principalが取れ、それに.getName()で名前を取得可能。その方がspringっぽいのかな。test class側では、認証accessが必要なmethodに上記の@WithMockUserをつければ良い。@WithMockUser(username="foo", password="pw", roles={"USER"})などとすれば色々指定可能だが基本的には不要

参照

Created My Blog by Grain

| Comments

Blog、はじめました

非常に遅まきながら、blogを作ってみました。

きしださんの2014-02-25(火) コミュニティに入るか入らないかでエンジニアとしての幸福度がかわるを見まして、 なるほどそうだなぁと思い、 そのためには発信していかなきゃ、 ということで、 始めました。

blog環境は世に数多あれど、 editorで書きたい、 dataを手元に置いておきたい、 ということから、 Qiitaやはてぶ等ではなく、 Github Pagesを用いました。 Github Pagesというのがあってblogに使える、 というのも今回初めて知りました。 この場合の世の趨勢は「Github Pages + Jekyll」、 ただ数が多くなると重くなるということで、 最近は「Github Pages + Hugo」に乗り換える人が多いようですが、 Java屋さんとしては、 Gradleで行けるGrainというのがあるというのを知り、 それを使ってみました。 わかってしまえば、結構簡単に入ります。

  1. まず、https://github.com で自分のGithub Pages repository(必ず「ユーザーID.github.io」という名前)を作成します。 中身は空で構いません。

  2. それから、GrainのOctopress用テーマを持ってきます。 これがGrainを含んでおり、また現状唯一のblog用のテーマです。 https://github.com/sysgears/grain-theme-octopress/releases で適宜最新版を確認してみて下さい。

    1
    
    $ wget -O - https://github.com/sysgears/grain-theme-octopress/archive/v0.4.5.tar.gz|tar xvfz -
    

  3. この状態で、プレビュー出来ます。

    1
    2
    
    $ cd grain-theme-octopress-0.4.5
    $ ./gradlew
    
    とすると、 http://localhost:4000/ でプレビューできます。 (本当は「./grainw 」でプレビューなんですがうまく行きませんでした)

  4. 新しい記事を作成するには、以下のようにします。

    1
    
    $ ./grainw create-post 'Any blog post title'
    
    すると、 「./content/blog/yyyy-mm-dd-上で指定したタイトル.markdown」

というfileが出来ます。それを編集します。

  1. Github Pagesにデプロイするには、 SiteConfig.groovy という設定ファイルの中に、 github のURLを書きます。 私の場合は、↓こうでした。

    1
    
    gh_pages_url = 'git@github.com:u-ryo/u-ryo.github.io.git'
    
    sshでgithubにアップロード出来るように、 https://github.com/settings/ssh で手元のマシンのssh public keyを登録しておきます。

  2. そうしておいてから、

    1
    
    $ ./grainw gendeploy
    
    とすると、私(ユーザーID:u-ryo)の場合は、 http://u-ryo.github.io/ でblogが見られる、という塩梅です。

  3. タイトル等このblogの設定は、 SiteConfig.groovy の中身を適宜変更すれば良いです。

...というようなことを、これから少しずつ発信していきたいと思います。

はまった点

  • grain-theme-octopress をgit cloneするとうまく行かず(./grainw generateで止まりました)、tar.gzファイルを落として展開するとうまく行った(./grainw generateが通った)
  • 記事ヘッダの「author:」で、文字列はシングルクォートないしダブルクオーテーションで囲む必要がある(groovyで処理するので、「文字列」にしておかないと後でエラーになります)
  • emacsのバックアップファイル(拡張子の最後に「~」が付くもの)もblogファイルと見做されてしまうため、消す必要がある(また、書いている途中だと「.#〜」というロックファイルが出来るが、これがあるとプレビューが立ち上がらない)