25
votes

Scenario:

  • AWS Elastic Beanstalk
  • Java application
  • .ebextensions currently placed in src/main/resources/.ebextensions

Commands are not being executed.

Where is the .ebextensions supposed to go in a Java application?

5

5 Answers

44
votes

Using Maven I did as follows:

  • mkdir src/main/ebextensions
  • put .config files into this folder
  • add the following to pom.xml

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src/main/ebextensions</directory>
                        <targetPath>.ebextensions</targetPath>
                        <filtering>true</filtering>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    

to transfer the files to the top level of the war when it is built.

29
votes

.ebextensions should be placed in the root of WAR.

The WAR structure looks like the following:

web_app.war
          |
          |_.ebextensions
          |   |_ 01run.config
          |   |_ 02do.config
          |
          |_META-INF
          |
          |_WEB-INF
               |_ classes
               |_ lib
               |_ web.xml

Refer to the official AWS docs for further information.

10
votes

Using gradle I did the following

  • mkdir src/main/resources/ebextensions
  • put .config files into this folder
  • add the following to build.gradle

apply plugin: 'war'

war {
    from('src/main/resources/ebextensions') {
        into('.ebextensions')
    }
}

to transfer the files to the top level of the war when it is built.

1
votes

you missed resources, it works when I put the path right

war {
    from('src/main/resources/ebextensions') {
        into('.ebextensions')
    }
}
1
votes

Update for people here in 2020, now task name is "bootWar"

bootWar {
    from('src/main/resources/ebextensions') {
        into('.ebextensions')
    }
}