logback.groovyで設定記述しようとしたらアレな事になった件について


Gradle使GroovyGroovy
logback

logback
OnConsoleStatusListener使使
Context
start


logback-classic-1.0.1logback.groovy使
import static ch.qos.logback.classic.Level.*
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import ch.qos.logback.core.status.OnConsoleStatusListener

statusListener(OnConsoleStatusListener)
statusManager.getCopyOfStatusListenerList().each {
 // TODO workaround
 it.context = context
 it.start()
}

appender("CONSOLE", ConsoleAppender) {
 encoder(PatternLayoutEncoder) { pattern = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" }
}

logger 'com.example', INFO, ['CONSOLE']
root WARN, ['CONSOLE']

GitHub
Forkeclipse:eclipseERROR
pull request






logbackGroovy使

Gradle-WrapperにHTTPとHTTPSのプロキシを設定して動かす。


GRADLE_OPTS
set GRADLE_OPTS=-Dhttp.proxyHost=example.jp -Dhttp.proxyPort=8080 -Dhttps.proxyHost=example.jp -Dhttps.proxyPort=8080

JVMHTTPHTTPS

Gradle使HTTPSHTTP
Exception in thread "main" java.net.ConnectException: Connection refused 




:

GitHubにGradleでリリース作業する。


pushAPI

SSH使




import org.eclipse.egit.github.core.*
import org.eclipse.egit.github.core.client.*
import org.eclipse.egit.github.core.service.*

import org.eclipse.jgit.api.*
import org.eclipse.jgit.lib.*
import org.eclipse.jgit.transport.*
import org.eclipse.jgit.errors.*

apply plugin: 'java'
apply plugin: 'war'

buildscript {
 repositories {
  mavenCentral()
  mavenRepo(url: 'http://download.eclipse.org/jgit/maven')
  flatDir { dirs 'lib' }
 }
 dependencies {
  classpath 'org.eclipse.jgit:org.eclipse.jgit:1.+'
  classpath 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:1.+'
 }
}

push
class PassphraseProvider extends CredentialsProvider {
 def passphrase = ""
 PassphraseProvider() {
  def pass = System.console().readPassword("\nenter ssh passphrase: ")
  this.passphrase = "$pass"
 }
 def boolean isInteractive() {
  false
 }
 def boolean supports(CredentialItem... items) {
  true
 }
 def boolean get(URIish uri, CredentialItem... items) {
  items.each {
   if(itinstanceof CredentialItem.StringType) {
    it.value = passphrase
    return true
   } else {
    throw new UnsupportedCredentialItem(uri, it.promptText);
   }
  }
 }
}

task tag << {
 def g = Git.open file('.git')
 def tag = null
 try {
  def n = "$version-$war.classifier"
  tag = g.tag() setName n setMessage "release $n" call()
  g.push().setPushTags().setCredentialsProvider new PassphraseProvider() setProgressMonitor new TextProgressMonitor() call()
 } catch(e) {
  g.tagDelete().setTags(tag?.tagName).call()
  throw e
 } finally {
  g.repository.close()
 }
}

push使

PassphraseProviderJGit


org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(CredentialsProvider, FS, String, String, String, int, Host)

private Session createSession(CredentialsProvider credentialsProvider,
  FS fs, String user, final String pass, String host, int port,
  final OpenSshConfig.Host hc) throws JSchException {
 final Session session = createSession(hc, user, host, port, fs);
 if (pass != null)
  session.setPassword(pass);
 final String strictHostKeyCheckingPolicy = hc
   .getStrictHostKeyChecking();
 if (strictHostKeyCheckingPolicy != null)
  session.setConfig("StrictHostKeyChecking",
    strictHostKeyCheckingPolicy);
 final String pauth = hc.getPreferredAuthentications();
 if (pauth != null)
  session.setConfig("PreferredAuthentications", pauth);
 if (credentialsProvider != null
   && (!hc.isBatchMode() || !credentialsProvider.isInteractive())) {
  session.setUserInfo(new CredentialsProviderUserInfo(session,
    credentialsProvider));
 }
 configure(hc, session);
 return session;
}


SSH使


GitHubAPIJava使
task uploadArchives(overwrite: true, dependsOn: war) << {
 def client = new GitHubClient()
 client.setCredentials(github_username, github_password)
 def repoid = RepositoryId.create('username', 'reponame')
 def dls = new DownloadService(client)
 def d = new Download()
 d.name = war.archiveName
 dls.createDownload(repoid, d, war.archivePath)
}

war
repoid
IDgradle.properties
github_username=oreore
github_password=KaA30re0re


task release(dependsOn:[build, tag, uploadArchives]) << { println "release fishined !!" }

gradleGit



同一のGroupIdかつ同一バージョンで複数のArtifactIdを依存ライブラリとして指定する。

  • Gradle 1.0-milestone-7


apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    [
        'jersey-core',
        'jersey-server',
        'jersey-servlet'
    ].each { compile "com.sun.jersey:$it:1.+" }
}

GradleGroovy
GString使

Gradleで文字エンコーディングを指定する方法

Gradleで文字エンコーディングを指定する方法 - 豆無日記

が余りにカッコワルイのでひねりだしてみた。

  • Gradle 1.0-milestone-7

で動かしてるます。

apply plugin: 'java'
apply plugin: 'groovy'

repositories {
	mavenCentral()
	mavenRepo(url: 'http://download.eclipse.org/jgit/maven')
	flatDir { dirs 'lib' }
}

sourceCompatibility = 1.6
targetCompatibility = 1.6

def encoding = { it.encoding = "UTF-8" }
tasks.withType(AbstractCompile) each { encoding it.options }
tasks.withType(GroovyCompile) each { encoding it.groovyOptions }

第一回 太一にモダンJSを教える会


2011/10/05






続きを読む

一歩先行くJavaプログラマが読むべきオープンソースソフトウェア10選

10万行コード読んだらJava分かるよってTwitterに書いたらすげぇ勢いでRTされたので、調子に乗って捕捉エントリ書くよ。

続きを読む