2015-06-14 11 views
9

मैं स्प्रिंगबूट और फ्लाईवे का उपयोग कर रहा हूं। माइग्रेशन ठीक काम करते हैं लेकिन मैं clean फ्लाईवे कमांड निष्पादित करने में सक्षम होना चाहता था जब अनुप्रयोग संदर्भ test प्रोफ़ाइल के साथ लोड हो जाता है।फ्लाईवे कैसे चलाएं: स्प्रिंगबूट ऐप में माइग्रेशन से पहले साफ करें?

क्या स्प्रिंगबूट को clean करने के लिए कॉन्फ़िगर करना संभव है और फिर migrate सक्रिय प्रोफ़ाइल test है?

उत्तर

25

आप इस तरह Flyway स्वचालित ऊपर लिख सकते हैं:

@Bean 
@Profile("test") 
public Flyway flyway(DataSource theDataSource) { 
    Flyway flyway = new Flyway(); 
    flyway.setDataSource(theDataSource); 
    flyway.setLocations("classpath:db/migration"); 
    flyway.clean(); 
    flyway.migrate(); 

    return flyway; 
} 

स्प्रिंग बूट में 1.3 (वर्तमान संस्करण 1.3.0.M1 है, जीए रिलीज सितम्बर के लिए योजना बनाई है), तो आप एक FlywayMigrationStrategy सेम परिभाषित करने के लिए उपयोग कर सकते हैं आप जो क्रियाएं चलाना चाहते हैं:

@Bean 
@Profile("test") 
public FlywayMigrationStrategy cleanMigrateStrategy() { 
    FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() { 
     @Override 
     public void migrate(Flyway flyway) { 
      flyway.clean(); 
      flyway.migrate(); 
     } 
    }; 

    return strategy; 
} 
+0

आपको बहुत धन्यवाद @ डुनि, इससे मदद मिली! – Barbadoss

संबंधित मुद्दे