2012-10-05 3 views
3

나는그루비 업데이트 설정 파일

section1 { 
    prop1 = val1 
    prop2 = val2 
    section2 { 
     prop3 = val3 
    { 
} 

// other style properties in this file 
anotherprop = someval 

// as well as some other statements 
println "hello there" 

같은 것을 보이는 멋있는 구성 파일을 그리고 예를 들어 prop3의 값을 변경하는 그루비 스크립트를 작성하고 싶습니다. 그루비에서 이렇게하는 좋은 방법이 있습니까? 파일에는 println뿐만 아니라 여러 스타일의 속성이 포함되어 있기 때문에 조금 힘듭니다.

+0

하십시오 regsub을 사용하는 것입니다 : 속성을 대체하기위한 유스 케이스는 무엇입니까? – rdmueller

+0

변경할 수있는 일부 구성 파일을 노출하는 제 3 자 코드로 작업 중이며이를 프로그래밍 방식으로 변경하려고합니다. printlns 속성에 중요한 것은 아니지만 가능한 한 전술적으로 파일을 남기고 싶습니다. –

+0

응용 프로그램에서 구성을 읽은 후에 구성을 수정할 수 있습니까? 그래서 당신의 app-config는 third party app config를 덮어 쓸 것입니까? – rdmueller

답변

0

이해할 수 있듯이 파일을 수정하려고합니다.

println 및 기타 진술을 파일에 가지고 있기 때문에 configurationSlurper로 파일을 읽는 것은 옵션이 아닙니다.

은 내가 easies 방법을 생각 (하지만 난 thsi 솔루션 downvotes을받을 것으로 예상) - ...

def config = new File('config.groovy').getText() 
def newValue = 18 
def newConfig = config.replaceAll(/(?ms)(prop3[ \t]*=[ \t]*)([0-9]*)/,'$1'+newValue) 
new File('config.groovy').write(newConfig) 

이 대부분의 경우 꽤 안정적이어야 BTW

+1

나는 그런 것 같지만 중첩 된 속성을 너무 잘 처리하지 못합니다. 예를 들어, 한 블록 안에 prop3, 다른 블록에 prop3이있는 경우를 예로들 수 있습니다. –

+0

재산에 "표시"할 기회가 있습니까? 아마 sourrounding 코멘트로? 또는 인라인 코멘트? myProperty = 15; // <- - 대체 될 것입니까? – rdmueller

+0

불행히도 위의 질문에 대한 나의 의견을 참조하십시오. –