복붙노트

[SPRING] grails의 환경 특정 web.xml?

SPRING

grails의 환경 특정 web.xml?

grails에서 환경 관련 web.xml 항목을 만드는 가장 좋은 방법은 무엇입니까?

로컬에서 실행을 중단 할 때만 제작에 대한 수정을해야합니다.

이견있는 사람?

해결법

  1. ==============================

    1.Grails와 플러그인이 변경을 완료하면 'WebXmlEnd'이벤트에 대한 이벤트 핸들러로 scripts / _Events.groovy를 생성 할 수 있습니다. XML을 구문 분석하여 일반 검색 / 바꾸기 또는 DOM 메소드를 통해 XML을 업데이트하고 업데이트 된 파일을 작성합니다.

    Grails와 플러그인이 변경을 완료하면 'WebXmlEnd'이벤트에 대한 이벤트 핸들러로 scripts / _Events.groovy를 생성 할 수 있습니다. XML을 구문 분석하여 일반 검색 / 바꾸기 또는 DOM 메소드를 통해 XML을 업데이트하고 업데이트 된 파일을 작성합니다.

    import grails.util.Environment
    
    eventWebXmlEnd = { String filename ->
    
       if (Environment.current != Environment.PRODUCTION) {
          return
       }
    
       String content = webXmlFile.text
    
       // update the XML
       content = ...
    
       webXmlFile.withWriter { file -> file << content }
    }
    
  2. ==============================

    2.내가 쓰고있는 해결책은 여기있다.

    내가 쓰고있는 해결책은 여기있다.

    먼저 템플릿을 설치하십시오.

    grails install-templates
    

    src / templates / war / web.xml에있는 web.xml을 사용자 정의하십시오. web_dev.xml과 web_prod.xml을 만들고 web.xml을 삭제하기로했습니다. web_prod.xml에 보안 제약 블록이 포함되기를 바랍니다. 어쨌든...

    BuildConfig.groovy에 다음을 추가하십시오.

    // #########################################################
    // ## Can't use environment switching block because BuildConfig doesn't support it.
    // ##    @url http://jira.grails.org/browse/GRAILS-4260
    // ## So use this workaround:
    // ##   @url http://death-head.ch/blog/2010/09/finally-solved-the-base-authentication-in-grails/
    // #########################################################
    
    switch ("${System.getProperty('grails.env')}") {
      case "development":
        if (new File("/${basedir}/src/templates/war/web_dev.xml").exists()) {
            grails.config.base.webXml = "file:${basedir}/src/templates/war/web_dev.xml"
        }
        break;
      default:
        if (new File("/${basedir}/src/templates/war/web_prod.xml").exists()) {
            grails.config.base.webXml = "file:${basedir}/src/templates/war/web_prod.xml"
        }
        break;
    }
    

    행운을 빕니다!

  3. ==============================

    3.아직 시도한 적이 없지만 현재 환경에 따라 BuildConfig.groovy에서 grails.config.base.webXml 매개 변수를 지정할 수 있어야합니다.

    아직 시도한 적이 없지만 현재 환경에 따라 BuildConfig.groovy에서 grails.config.base.webXml 매개 변수를 지정할 수 있어야합니다.

    사용 가능한 BuildConfig 설정 목록이 여기에 있습니다.

    편집하다

    사실,이 문제로 인해 이것은 앞으로 나아갈 수있는 방법이 아닙니다 :-( 아마 속성을 지나칠 수 있습니다 :

    grails -Dgrails.config.base.webXml=/path/to/web.xml
    

    그게 가능할까요?

  4. from https://stackoverflow.com/questions/5888980/environment-specific-web-xml-in-grails by cc-by-sa and MIT license