Commit Graph

135 Commits (4e1c2596457415490d0fd587b7a491a4e21e16d2)

Author SHA1 Message Date
Phillip Webb 595cb6d55b Fix version-type logic to deal with RCx form 11 years ago
Phillip Webb 68293f34af Upgrade version to 1.0.0.BUILD-SNAPSHOT
Fixes fg-243
11 years ago
Phillip Webb 18cecd077d Move CLI integration tests into spring-boot-cli
Use `maven-failsafe-plugin` to run CLI integration tests as part of
the `spring-boot-cli` project, removing the need for
`spring-boot-cli-integration-tests`.
11 years ago
Andy Wilkinson f418a07ba7 Add basic integration tests for the CLI
Add integration tests for the CLI that invoke it as a user would, i.e.
via the shell script in the package's bin directory.
11 years ago
Andy Wilkinson 895daacde9 Roll spring-boot-maven-settings into the CLI 11 years ago
Andy Wilkinson a58e4cbb1f Add support for configuring Aether via settings.xml
Previously, Aether's configuration was largely hard-coded making it
impossible to configure a mirror, provide credentials for accessing
a repository, etc.

This commit adds support for configuring Aether via Maven's
settings.xml file. The support is optional and must be enabled by
grabbing spring-boot-maven-settings in an init script. The Aether
instance that's used when running the application will then be
configured using settings.xml. The settings file is expected to be
found in ${user.home}/.m2/settings.xml.

The configuration of the following items is currently supported:

 - Offline
 - Proxies
 - Mirrors
 - Server authentication
 - Local repository location

If the support is not enabled, settings.xml does not exist, or
settings.xml does not configure certain things then sensible defaults
are applied.
11 years ago
Dave Syer 8cb0211dce Add "integration" profile in Maven build
By default it is on, but you can switch it
off (`-P '!integration'`) to ignore integration tests
and get a faster build.

.travis.yml uses this feature so that it doesn't keep
failing on a timeout.
11 years ago
Phillip Webb b19f6bb238 Isolate class loading for launched CLI apps
Rework classloading for launched applications so that CLI classes and
dependencies are not visible. This change allows many of the previous
hacks and workarounds to be removed.

With the exception of the 'org.springframework.boot.groovy' package
and 'groovy-all' all user required depndencies are now pulled in
via @Grab annotations.

The updated classloading algorithm has enabled the following changes:

- AetherGrapeEngine is now back in the cli project and the
  spring-boot-cli-grape project has been removed. The AetherGrapeEngine
  has also been simplified.

- The TestCommand now launches a TestRunner (similar in design to the
  SpringApplicationRunner) and report test failures directly using
  the junit TextListener. Adding custom 'testers' source to the users
  project is no longer required. The previous 'double compile' for
  tests has also been removed.

- Utility classes have been removed in favor of using versions from
  spring-core.

- The CLI jar is now packaged using the 'boot-loader' rather than using
  the maven shade plugin.

This commit also applied minor polish refactoring to a number of
classes.
11 years ago
Andy Wilkinson c0ae78f3ec Isolate Aether in a separate class loader
Prior to this commit, the Aether-based GrapeEngine was loaded in the
same class loader as the rest of Boot. This led to Aether's and its
dependencies' types polluting the application's class path. Most
notably, this caused problems with logging as the logging framework
could be permaturely initialized.

This commit isolates AetherGrapeEngine, Aether and its dependencies
into a separate class loader. This is done by customizing the
packaging of the CLI's jar file with the internal directory housing
all of the types that will be loaded by the separate class loader.
11 years ago
Dave Syer a72ab9eb7d Refactor cli properties into single project 11 years ago
Andy Wilkinson c1ec5e5c0e Support @Grab without a version or group
Usually, use of @Grab requires you to specify a group, module, and
version when identifying a dependency. This can be done in two
different ways:

@Grab(group='alpha', module='bravo', version='1.0.0')
@Grab('alpha:bravo:1.0.0')

This commit allows users to only specify a module: the group is
inferred and the version is the one dictated by the boot CLI. Both
forms are supported:

@Grab(module='bravo')
@Grab('bravo')

Groovy's global AST transformations, which is how Grab is implemented,
do not support ordering and we need to augment the AST for the Grab
annotation before its processed by the Grab AST transformation. To
work around this, reflection is used to get hold of the compile
operations in the conversion phase, and a new AST transformation is
inserted immediately before the first AST transformation operation.

To allow a module's groupId and version to be resolved consistently,
META-INF/springcli.properties has been enhanced to include properties
for each module that we want to support in the following form:

<module>.groudId = <groudId>
<module>.version = <version>

<groupId> and <version> are taken from the Maven project's
dependencies and VPP, a Velocity-based pre-processor, is used to
automatically generate the enhanced properties file.

To prevent pollution of spring-boot-cli's class path with the
dependencies that are only required to populate springcli.properties,
a separate project, spring-boot-cli-properties, has been created.
spring-boot-cli depends upon this now project causing it to, via the
shade plug, include the properties file in its jar.

Previously DependencyCustomizer allow a dependency to be added by
specifying its full coordinates, i.e. a group ID, artifact ID, and
version. This commit updates DependencyCustomizer to only require
an artifact/module ID. The group ID and version are then resolved
using the same mechanism as the enhanced @Grab support.

[#56328644] [bs-312] Allow @Grab without version
11 years ago
Phillip Webb a33425920b Rework POMs to support automated CI release 11 years ago
Dave Syer 38e565e920 Back to SNAPSHOT for dev 11 years ago
Dave Syer b634b3bde6 Update to 0.5.0.M2 11 years ago
Phillip Webb a08aac6fa5 Travis CI tweaks 11 years ago
Dave Syer 6e8cbbde3b Use reflection hack for error page in Tocmat 8 11 years ago
Sergey Shcherbakov b4542f722f Support for embedded Tomcat 8 container parallel to the current Tomcat 7 11 years ago
Phillip Webb 1db22aca5c Rework POM structure
Rework main build POM to be an aggregator pom that does not inherit
from any parent. Introduce new spring-boot-dependencies module to
act as a parent for both spring-boot-starter-parent and
spring-boot-parent.
11 years ago
Dave Syer 27ebb52196 Add back dev profile 11 years ago
Dave Syer 859e6c2ea8 Add spring-test to parents for samples 11 years ago
Dave Syer 4bb5de02e7 Switch back to SNAPSHOT for dev 11 years ago
Dave Syer 638a31f5e3 Fix poms for a milestone release 11 years ago
Dave Syer 19a880dff6 Move tools modules under spring-boot-tools 11 years ago
Dave Syer 68e5a7e887 Bump version to 0.5.0.M1 11 years ago
Phillip Webb 57f62a5a20 Remove samples from main POM 11 years ago
Phillip Webb bd5e49fc84 Revert "Remove integration tests project"
Turns out the maven-plugin still causes issues.

This reverts commit 1ccdf2f6cf.
11 years ago
Phillip Webb 1ccdf2f6cf Remove integration tests project
Remove no longer required integration tests project. Samples can
now be called as part of the build since the maven plugin is no
longer an extension.
11 years ago
Dave Syer 92ff433dd0 Add samples to pom so they are part of reactor
(Might remove this later but getting ready for a release)
11 years ago
Dave Syer 5995b7727a Ops -> Actuator 11 years ago
Phillip Webb 3bb79db579 Renamed spring-boot-ups -> spring-boot-starter 11 years ago
Phillip Webb 2752177fba Add spring-boot-gradle-plugin
Develop gradle plugin that can repackage JAR/WAR archives so that
they can be launched using 'java -jar'

Issue: #53129653
11 years ago
Phillip Webb 5e4238f38a Create spring-loader-tools project
Create spring-loader-tools containing utilities that can be used
with both Maven and Gradle plugings.

Refactored existing Maven plugin to use the new project.

Issue: #53129653
11 years ago
Phillip Webb b665a2bb1d Renamed packages
Issue: #54095231
11 years ago
Phillip Webb 3f2bb03fb8 Renamed some projects and polish POMs
Issue: #54095231
11 years ago
Dave Syer 2098e23fca Change package names zero->boot
* actuator -> boot-ops
* cli -> boot-cli
* launcher -> boot-load
* autoconfig -> boot-config
* bootstrap -> boot-strap
* starters -> boot-up

[#54095231] [bs-253] Refactor Zero->Boot
11 years ago
Dave Syer 683ddbf525 Add Reactor autoconfiguration
* Make Rector @Autowirable
* Create a ConsumerBeanPostProcessor so users can add
@On and @Reply to bean methods
* Added groovy auto compiler and script sample

[#53955419] [bs-250]
11 years ago
Dave Syer d639763bd7 Another attempt at making the ui sample work 11 years ago
Phillip Webb 1eca022073 Add JSP-API to tomcat starter
Add JSP API jar dependency to tomcat starter. Primarily to prevent
log warnings.
11 years ago
Dave Syer fff2a804bc Add springcli.properties for version labels
[Fixes #53030591] [bs-191] Use filtering in maven build
12 years ago
Dave Syer 6fd6afc7a3 Upgrade Spring Security to 3.2.0
Existing users should update their dependencies to
spring-security-config instead of *-javaconfig.

[Fixes #53472823] [bs-234]
12 years ago
Dave Syer 789e75d2e5 [bs-170] Out of the box support for thymeleaf security dialect
[Fixes #52121649]
12 years ago
Phillip Webb dc1b787a01 Support color log output
Rework logback formatting to include ansi color output. Also added
support for JUL over SLF4J to ensure that tomcat logging looks OK.

Issue: #53249833
12 years ago
Phillip Webb 8f62222419 Generate default manifest for all projects 12 years ago
Phillip Webb d8d8b7643b Upgrade various dependency versions 12 years ago
Dave Syer 36cbb39dec [bs-194] Restore udev in maven
Also tidy up some TODOs

[Fixes #53030439]
12 years ago
Dave Syer d260fa6456 [bs-173] Upgrade Thymeleaf layout dialect
[Fixes #52629385]
12 years ago
Dave Syer 5b78ebe6e3 Add plugin repos to bootstrap profile 12 years ago
Dave Syer 30802e542f Fix intergration tests spelling 12 years ago
Phillip Webb cd51f357a3 Further maven module restructure 12 years ago
Phillip Webb 346a0bace7 Minor pom tweaks
Fix warnings and include sonar support.
12 years ago
Phillip Webb 40bf334871 Restructure projects layout 12 years ago
Phillip Webb 56bfa30b2c Add setup profile
Add a setup profile allowing the maven plugin to be build alone.
Required to prevent 'unresolveable build extension' errors on a
fresh checkout.

Issue: #52091115
12 years ago
Phillip Webb 19b392bb3d Develop bootstrap maven plugin
Develop a maven plugin that can be used to package executable jar/war
archives. The plugin is intended to be used as a drop-in replacement
for the standard maven-jar-plugin. To use the plugin declare it with
<extensions>true</extensions> then set the project type to
'executable-jar' or 'executable-war'.

Configuration options for 'executable-war' generation are intentionally
much more limited then the standard maven-war-plugin (for example
overlays are not supported). It is anticipated that builds requiring
complex configuration will continue to use the standard plugin in
combination with a custom assembly.

Issue: #52091115
12 years ago
Dave Syer 1f17ac3e34 Add some security managed dependencies 12 years ago
Phillip Webb 7d7dc5107d Use Spring 4.0 snapshot 12 years ago
Phillip Webb ced99ff18c Polish pom.xml
Polish pom.xml formatting and pull version numbers into parent pom
when possible.
12 years ago
Dave Syer 7bd1aeb514 Add global properties for versions 12 years ago
Dave Syer 7b0ec252dd Revert to Spring 4.0.0.M1 12 years ago
Dave Syer 3c34326208 [bs-141] Add Bootstrap WebApplicationInitializer got traditional wars
[#50806851] [bs-141] First class escape hatch from jar to war for web applications
12 years ago
Dave Syer 3ba5f56808 [bs-138] Add @OnManagementContext for management beans
User adds @OnManagementContext to a bean or @Configuration and
it should be included in the management context (if there is one)
whether it is the main context or a child.

Makes it easy to secure the management endpoints and keep
the rest open (see actuator-ui-sample).

[#50721675]
12 years ago
Dave Syer a71bb1c972 [bs-120] Support for groovy templates
* Added GroovyTemplate.template() utility and static import in webapp CLI, so

        @RequestMapping("/")
        @ResponseBody
        String home(Model model) {
           template "home.html", model
        }

    renders the template in /templates/home.html

[Fixes #49832753]
12 years ago
Dave Syer 2861ad4106 [bs-122] Support for Spring Data DomainClassConverter
[#49906951]
12 years ago
Dave Syer 50f3a2c614 Add logging to BasicDataSourceConfiguration 12 years ago
Dave Syer 83b5240a0f Add some dependencies 12 years ago
Dave Syer 430ec347fd Tweak dependency versions 12 years ago
Dave Syer 6d21ff71ba Add some dependencies to starters 12 years ago
Dave Syer 53078c320e [bs-118], [bs-119]: add UI builder features
* MessageSource created automatically (location
spring.messages.basename:messages)
* Thymeleaf configured automatically to look for
templates in classpath:/templates
* Added static resource handlers for classpath:/static
and classpath:/

[Fixes #49832165] [bs-118] Support for thymeleaf templates
12 years ago
Phillip Webb 0bc2b5673c Use Spring 4.0 now that bootstrap branch is merged 12 years ago
Phillip Webb e7a67ba2a8 Use commons-logging for bootstrap dependencies
Update main bootstrap modules to use Apache commons-logging rather than
SLF4J.
12 years ago
Phillip Webb 2f3b30e49f Example pom.xml Javadoc config for Java 8
Include commented out config showing how the maven build Javadoc
section can be modified to work with Java 8.
12 years ago
Dave Syer a5810af882 Add mvn deployment gumf 12 years ago
Dave Syer 694a1dd408 Bump version to 0.5.0.BUILD-SNAPSHOT 12 years ago
Dave Syer c19c483ab8 Add deployment metadata 12 years ago
Dave Syer 59287f1d89 Add bootstrap profile with repositories 12 years ago
Dave Syer b897f35cad [bs-85] New name for production-ready features = "actuator"
[#49047535]
12 years ago
Dave Syer eb7bc64e75 [bs-86] New name for "applications" - "starters"
[#49047569]
12 years ago
Dave Syer b94aaa321d [bs-98] Add tomcat JDBC to parent pom
[#49393511] [bs-98] Add support for Tomcat database pool
12 years ago
Dave Syer 81d0f14080 [bs-52] ensure "mvn exec:java" works in trad web sample
[#48386505] [bs-52] Support for running "traditional" webapps in place
12 years ago
Dave Syer b462bc6e6c [bs-96] Switch off m2e errors about /eclipse path
* Uploaded m2e eclipse baggage to http://static.springsource.org
* Changed location in parent pom
* Removed all main.basedir properties from poms

[Fixes #49285987]
12 years ago
Dave Syer 380b1748c9 Changes to applications poms:
* Suport maven-exec-plugin in the same way as the shade plugin, so
        $ mvn exec:java
    is all you need to do to run an app
* Update README
* Fix dependencies to nail Spring version
12 years ago
Dave Syer 504d96eb51 [bs-92] Add simple main wrapper for SpringApplication
* Added Spring class
* Used in demo project in README
* Also fixed cycle in spring-bootstrap jar

[Fixes #49121565]
12 years ago
Dave Syer 833b13bbbc [bs-80] Add configurable / switchable web request trace logging (headers etc)
* Added a bean post processor for the Spring Security filter chain
(so you only get traces by default if security is on)
* Every request is logged at trace level if the dump requests flag is
on
* Requests are also dumped to a TraceRepository for later analysis (very
useful for tracing problems in real time when a support call comes in)

[Fixes #48976001]
12 years ago
Dave Syer bcf86b320e [bs-72], [bs-75] Add Batch plugin features
* Auto config in main bootstrap jar
* Compiler enhancements in groovy cli
* Sample script in cli samples

[Fixes #48716881], [Fixes #48788313]
12 years ago
Dave Syer a2d328ae3a [bs-73] Anonymous classes cannot be used in @Bean definitions in .groovy scripts
* Added a test for each of the classes loaded by the SpringApplication
* If it's an anonymous class or looks like a Groovy closure we ignore it
* The CLI sample job.groovy also modified to take advantage

[Fixes #48718891]
12 years ago
Dave Syer fb6b224470 Fast forward existing prototype work 12 years ago