Using database migrations plugin from within another plugin

The plugin infrastructure provides Grails with great power in how to structure the code base for their applications. For example, if you had to make customizations to your project for a particular client, you could place all your core code in a plugin and have a default and a custom application depending on that plugin.

For whatever reason you decide in having a "core" plugin, you might encounter a few bumps in the process. One such bump involves the database migrations plugin. By default the database plugin expects the migration changelogs to be in grails-app/migrations. It is possible to change this location via the configuration config.grails.plugin.databasemigration.changelogLocation, but this requires knowing the location of plugin. So one solution is to put code like the following somewhere in your plugin:

Note that in my case, I'm using the platform-core-plugin so it seems appropriate to put it in the doWithConfig closure of my Plugin definition file.

Comments

  1. Great post, I'm working on it. Thanks.

    Only for the record import is necessary

    import org.codehaus.groovy.grails.plugins.PluginManagerHolder

    Thanks!

    ReplyDelete
    Replies
    1. Happy to hear it was useful.
      Thanks for the pointer, I've added the import statement to the example.

      Delete
  2. That works great within my IDE, but it doesn't work when packaging and depolying it as a war-file. I keep getting the message:

    "Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener
    org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is liquibase.exception.ChangeLogParseException: changelog.groovy not found"

    Any clue how to resolve that one?

    ReplyDelete
  3. đồng tâm
    game mu
    cho thuê nhà trọ
    cho thuê phòng trọ
    nhac san cuc manh
    số điện thoại tư vấn pháp luật miễn phí
    văn phòng luật
    tổng đài tư vấn pháp luật
    dịch vụ thành lập công ty trọn gói
    lý thuyết trò chơi trong kinh tế học
    đức phật và nàng audio
    hồ sơ mật dinh độc lập audio
    đừng hoang tưởng về biển lớn ebook
    chiến thắng trò chơi cuộc sống ebook
    bước nhảy lượng tử
    ngồi khóc trên cây audio
    truy tìm ký ức audio
    mặt dày tâm đen audio
    thế giới như tôi thấy ebook

    Ân Tố Tố khẽ thò bàn tay nhỏ bé của mình xuống vùng không gia giữa hai chân hắn, vuốt ve nhục bổng vài cái rồi nói: “Cô cô nói cũng nhanh thôi nhưng ít nhất cũng phải hết năm nay.”

    vui.

    “Tố Tố, yên tâm, ta sẽ cho nàng hài lòng…” Lưu Phong trả lời một câu có chút mơ hồ, nhưng quả thật ngoài chuyện này thì hắn không biết phải trả lời thế nào nữa.

    Ân Tố Tố là nữ nhân thông minh, nàng hiểu chỉ nên hỏi tới đây, không nên hỏi thêm nữa, hắn đã không muốn trả lời thì tuyệt không nên hỏi nữa.
    Nành bình thản, hay tay vít lấy cổ hắn, kiều mỵ nói : “Phu quân, chỉ cần trong lòng chàng yêu thiếp là được, thiếp chỉ cần như vậy là đủ rồi. …. Vương Đông Đông kia nếu chàng thích thì thiếp cũng không phản đối…” Ân Tố Tố mặc dù miệng nói là không phản đối nhưng trong khóe mắt lại rơm rớm nước mắt. Nữ nhân ăn phải dấm chua, ai mà muốn chứ.

    Lưu Phong tựa như cũng hiểu được mình là nam nhân của thế kỷ hai mươi, như thế này cũng có chút không phải, khẽ rùng mình, nghiêm mặt nói: “Tố Tố, nàng đừng hiểu lầm ta. Ta và Vương Đông Đông không phải như nàng tưởng tượng vậy. Chu Tam là người như thế nào chắc nàng cũng biết. Ta chỉ không muốn nhẫn tâm nhìn thấy Vương Đông Đông rơi vào tay hắn mà thôi. Đợi chuyện này kết thúc ta và Vương Đông Đông sẽ chấm dứt quan hệ.”

    Nếu là nữ nhân khác nghe Lưu Phong nói như vậy tất không dễ dàng tin nhưng Ân Tố Tố lại khác. Nàng đối với Lưu Phong đặc biệt tin tưởng. Tình yêu của nàng dành cho hắn đã làm mù quáng tất cả.

    ……………

    ReplyDelete

Post a Comment

Popular posts from this blog

AngularJs: User friendly date display with AngularJs and MomentJs

Nerd Tree: A File Explorer with Mac Vim

Getting started with Grails functional tests using Geb + Spock