Commit Graph

371 Commits (88a58a09334f8a302d586c0149695ee50977c5a5)

Author SHA1 Message Date
Phillip Webb 90defac71c Workaround Spring Data Rest enforcer issue
Temporarily update `spring-boot-starter-data-rest` to declare
the correct spring-plugin version.
5 years ago
Andy Wilkinson 79d8089cd0 Remove redundant spring-plugin-core dependencies
Closes gh-18317
5 years ago
Andy Wilkinson 4cc7fef728 Deprecate support for Spring Cloud Connectors in favor of Java CFEnv
Closes gh-17877
5 years ago
Stephane Nicoll b3b6605713 Merge branch '2.1.x'
Closes gh-18236
5 years ago
Stephane Nicoll a642421661 Force creation of sources jar
Closes gh-18212
5 years ago
Johnny Lim 5b41c3b608 Polish
See gh-18192
5 years ago
Stephane Nicoll 4928e958ce Add reference to Pebble Templates to 3rd party starter list
Closes gh-17822
5 years ago
Stephane Nicoll ad51972e3b Add reference to grizzly starter
Closes gh-17620
5 years ago
Remko Popma e69854fc30 Add reference to picocli starter
See gh-17591
5 years ago
Stephane Nicoll f32020aaad Polish "Add reference to amqp-rabbit-spring-boot-autoconfigure"
See gh-17537
5 years ago
EugeneMsv e632ea706d Add reference to amqp-rabbit-spring-boot-autoconfigure
See gh-17537
5 years ago
Brian Clozel 906f7637ed Add synchronoss multipart dependency in webflux starter
Fixes gh-17484
5 years ago
dreis2211 7c6fd31d06 Use Spring 5 module of Jersey
See gh-17412
5 years ago
Andy Wilkinson e5549f7a21 Stop Jersey from pulling in duplicate classes with JDK 11+
Closes gh-17404
5 years ago
Phillip Webb 8edf88a08b Polish M2Eclipse ignore configuration
Pull all M2Eclipse ignore configuration up to the parent POM and
increase the version ranges covered.
5 years ago
Stephane Nicoll c9b8d98bcf Upgrade to JUnit Jupiter 5.5.0-RC1
This commit also removes the workaround that required to exclude junit 4
explicitly now that a related issue in JUnit Jupiter has been fixed.

Closes gh-17266
5 years ago
Phillip Webb db75347eb6 Merge branch '2.1.x' 6 years ago
Phillip Webb 0ef331018e Merge branch '2.0.x' into 2.1.x 6 years ago
Phillip Webb 7fc01971ed Merge branch '1.5.x' into 2.0.x 6 years ago
Phillip Webb f96dc33c0f Merge branch '2.1.x' 6 years ago
Steve Crow e0e871c77b Add Nexmo to list of third-party starters
Closes gh-16944
6 years ago
Andy Wilkinson 9f512ec3d9 Merge branch '2.1.x'
Closes gh-16950
6 years ago
Andy Wilkinson 32e1d68d2f Upgrade to Couchbase Client 2.7.6
Closes gh-16909
6 years ago
Andy Wilkinson 23f803c6b6 Upgrade to Hamcrest 2.1, switch to hamcrest artifact from -core and -library
Closes gh-15555
6 years ago
Brian Clozel e8d39a1539 Add support for CBOR codecs in RSocket
This commit auto-configures CBOR (see https://cbor.io/) codecs in the
RSocketStrategies, using Jackson binary format support.

The required dependency is added to the rsocket starter. Binary codecs
are well suited for RSocket payloads, so this codec is added first to
the list of codecs (before the JSON one already supported).

Closes gh-16830
6 years ago
Brian Clozel d9ac3031c5 Remove Synchronoss nio-multipart from WebFlux starter
Closes gh-16817
6 years ago
Stephane Nicoll 81af0f2fa6 Explicitly include JUnit 4 in test starter
Closes gh-16807
6 years ago
Madhura Bhave d9f339a1b6 Include Junit5 dependencies in Spring Boot Starter Test
Closes gh-14736

Co-authored-by: Stephane Nicoll <snicoll@pivotal.io>
6 years ago
Patryk Kostrzewa ff7cf2dc96 Update WebFlux starter to depend on validation starter
Previously, the WebFlux starter declared direct dependencies on Hibernate Validator
and the Jakarta EE validation API. This meant that it required two exclusions to
exclude validation from a reactive web application that did not need it.

This commit updates the WebFlux starter to get its validation dependencies via a
dependency on the validation starter. This allows validation to be excluded
using a single exclusion. The EL dependency from the validation starter has
been excluded to allow the EL implementation from the underlying container
starter to continue to be used instead.

See gh-16593
6 years ago
Andy Wilkinson af4ce2d537 Merge branch '2.1.x'
Closes gh-16600
6 years ago
Andy Wilkinson 50bcfd25fd Make EL available to reactive web apps as it already is to servlet web apps
Closes gh-16596
6 years ago
Andy Wilkinson e7455b454b Merge branch '2.1.x'
Closes gh-16564
6 years ago
Andy Wilkinson 043f0ffbeb Restore indentation in published spring-boot-starter-parent pom
Closes gh-16466
6 years ago
Brian Clozel b33944b53f Add RSocket server support with Spring Messaging
This commit adds support for RSocket server applications.
The auto-configuration will either add RSocket support to an existing
Reactor Netty server in a WebFlux application (as a WebSocket endpoint),
or bootstrap a brand new RSocket server instance.

Spring Boot will also auto-configure the Spring Messaging infrastructure
that supports Controller beans with `@MessageMapping` annotated methods.

Fixes gh-16021
6 years ago
Stephane Nicoll 20e98cb999 Merge branch '2.1.x' 6 years ago
Stephane Nicoll 391c8b6274 Add reference to https://github.com/alimate/errors-spring-boot-starter 6 years ago
Spring Operator fb242c27d2 Use HTTPS for external links wherever possible
See gh-16276
6 years ago
Andy Wilkinson 878a635bfb Merge branch '2.1.x' 6 years ago
Andy Wilkinson 5a3474c7a8 Polish "Use HTTPS for external links wherever possible"
See gh-16320
6 years ago
Spring Operator 9fc3ac7d49 Use HTTPS for external links wherever possible
See gh-16320
6 years ago
Andy Wilkinson 864942ad4f Merge branch '2.0.x' into 2.1.x 6 years ago
Spring Operator 1a4c6f2dac Use HTTPS for external links wherever possible
See gh-16319
6 years ago
Andy Wilkinson ba4671f0ab Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll 3e3353e0e9 Merge branch '2.1.x' 6 years ago
Stephane Nicoll f417fa5c5b Add jaxb API to jersey starter
Closes gh-16268
6 years ago
Andy Wilkinson 4900505425 Merge branch '2.0.x' into 2.1.x 6 years ago
Andy Wilkinson fedb40a2bf Merge branch '1.5.x' into 2.0.x 6 years ago
Stephane Nicoll 6e9e5e5a8b Ignore duplicate "about.html" in Jetty HTTP client
Closes gh-16272
6 years ago
Spring Operator 00ab30362c Use HTTPS for external links in XML files
See gh-16270
6 years ago
Andy Wilkinson b828b398b5 Merge branch '2.1.x' 6 years ago
Spring Operator b32c0080c3 Update build and setup configuration to use HTTPS
See gh-16247
6 years ago
Andy Wilkinson a36aa67b52 Merge branch '2.0.x' into 2.1.x 6 years ago
Spring Operator 3e2b6ac8ed Update build and setup configuration to use HTTPS
See gh-16246
6 years ago
Andy Wilkinson f5eb853f26 Update web starter to depend on validator starter
Previously, the web starter declared direct dependencies on Hibernate Validator
and the Jakarta EE validation API. This meant that it required two exclusions to
exclude validation from a web application that did not need it.

This commit updates the web starter to get its validation dependencies via a
dependency on the validation starter. This allows validation to be excluded
using a single exclusion. The EL dependency from the validation starter has
been excluded to allow the EL implementation from the underlying container
starter (Tomcat, Jetty, or Undertow) to continue to be used instead.

Closes gh-16176
6 years ago
Andy Wilkinson 0959698c32 Upgrade to Jersey 2.28
Closes gh-16114
6 years ago
Andy Wilkinson d6a869fa98 Switch to Jakarta EE API dependencies where possible
Closes gh-16113
Closes gh-16112
Closes gh-16111
Closes gh-15916
Closes gh-15689
6 years ago
Stephane Nicoll a84a6c34ba Merge branch '2.1.x' 6 years ago
Stephane Nicoll 9357a92503 Add reference to Codecentric's SOAP Web Services starter 6 years ago
Johnny Lim 498eef5abb Add starter entry for Azure Application Insights
Closes gh-15628
6 years ago
Stephane Nicoll cc5624efc4 Merge branch '2.1.x' 6 years ago
Stephane Nicoll 27a611f635 Restore reference to nutz third party starter
Closes gh-15564
6 years ago
Andy Wilkinson 064f6478df Move back to JUnit 4 until SUREFIRE-1614 has been resolved
See gh-14736
See gh-14737
See gh-14738
6 years ago
Andy Wilkinson bbf0932f0f Exclude jcl-over-slf4j in favour of spring-jcl
Closes gh-15392
6 years ago
Madhura Bhave 4c96c76f11 Include Junit5 dependencies in Spring Boot Starter Test
See gh-14736
6 years ago
Stephane Nicoll 185a49fb3b Add reference to JaVers starter 6 years ago
Eddú Meléndez 5e09a2ee55 Add reference to sentry-spring-boot-starter
Closes gh-15205
6 years ago
Mark Vollmary 634b92001b Add reference to ArangoDB starter
Closes gh-15144
6 years ago
sreeise 6454a8f4ca Remove redundant json starter from spring-boot-starter-data-rest
Closes gh-15137
6 years ago
Stephane Nicoll 3628c5b2dc Remove redundant declaration on spring-context
Closes gh-15107
6 years ago
Dmitry Zhikharev 226ccc2e84 Add reference to Hiatus starter
Closes gh-15082
6 years ago
Andy Wilkinson c82a13d18e Upgrade to Byte Buddy 1.9.3
Closes gh-14866
6 years ago
Vedran Pavic 81c7ce1d15 Add starter for OAuth2 resource server
Closes gh-14950
6 years ago
Phillip Webb 69b0d37fe0 Rename oauth2-oidc-client starter
Rename `spring-boot-starter-oauth2-oidc-client` to
`spring-boot-starter-oauth2-client`.

Closes gh-14951
6 years ago
Andy Wilkinson 923b48bae0 Exclude duplicate javax.activation classes from web services starter
In 2.3.1, the JAX-B API now depends on javax.activation-api. This has
caused duplicate Activation classes to appear in the starter due to
dependencies on both javax.activation:activation:1.1 and on
javax.activation:javax.activation-api:1.2. This commit removes the
duplicate classes by excluding the former in favour of the latter.

See gh-14754
6 years ago
Phillip Webb 456d1af443 Polish 6 years ago
Andy Wilkinson 8ee4c5e4a1 Use offical JSON API jar rather than Geronimo's in Artemis starter
Closes gh-14691
6 years ago
Andy Wilkinson 5bbdca8cdb Use offical JSON API jar rather than Geronimo's in Artemis starter
Closes gh-14691
6 years ago
Phillip Webb 42cb0effc4 Merge branch '2.0.x' 6 years ago
Phillip Webb 3ff20b2440 Restore import-control checkstyle
Restore checkstyle import control and fix a few violations in the
process.

Closes gh-14660
6 years ago
Stephane Nicoll 3f9c41df81 Merge branch '2.0.x' 6 years ago
Rodolpho Couto e30f693699 Add reference to valiktor-spring-boot-starter
Closes gh-14514
6 years ago
Andy Wilkinson 4b00dc8a5c Add support for Spring Data JDBC (auto-config, starter, and test slice)
Closes gh-14489
6 years ago
Stephane Nicoll 390fc03769 Polish "Add reference to ssh shell spring boot starter"
Closes gh-14496
6 years ago
François Onimus b416a46674 Add reference to ssh shell spring boot starter
See gh-14496
6 years ago
Stephane Nicoll 0dafc37f76 Merge branch '2.0.x' 6 years ago
Stephane Nicoll b7e1a2ea6c Add reference to Rollbar starter
Closes gh-14343
6 years ago
Stephane Nicoll 9dec5811fb Polish "Add reference to Stripe Payment Gateway Service starter"
Closes gh-14304
6 years ago
pankajtandon 40e574c3c2 Add reference to Stripe Payment Gateway Service starter
See gh-14304
6 years ago
Andy Wilkinson b580dd70f8 Polish 6 years ago
Andy Wilkinson da13871f84 Merge branch '2.0.x' 6 years ago
Andy Wilkinson 86d87ad215 Polish 6 years ago
Andy Wilkinson 7442e37154 Add JAXB API to Data JPA starter so it works out-of-the-box on Java 9+
Closes gh-14287
6 years ago
Johnny Lim 46415cb859 Add Spring Boot starter for Narayana in doc
Closes gh-14220
6 years ago
Stephane Nicoll dd94adbc11 Merge branch '2.0.x' 6 years ago
Stephane Nicoll ff11166af8 Restore RabbitMQ advanced starter as it is compatible with Spring Boot 2 6 years ago
Stephane Nicoll db27d8fdf8 Revert "Polish dependency management for OIDC starter"
This reverts commit 3ad3cfd7e2.

Closes gh-14137
6 years ago
Stephane Nicoll a86d7cdb97 Add execution id to `repackage` goal
Closes gh-14210
6 years ago
Stephane Nicoll 3ad3cfd7e2 Polish dependency management for OIDC starter
See gh-13830
6 years ago
Madhura Bhave 09e09bf430 Add starter for OpenID Connect/OAuth2 client
Closes gh-13830
6 years ago
Stephane Nicoll 930c838da9 Remove Narayana support
The Spring Boot integration is now handled by the Narayana project
itself at https://github.com/snowdrop/narayana-spring-boot

This commit removes our support.

Closes gh-12026
6 years ago
Stephane Nicoll 4bc5535c37 Rework "Remove redundant spring-boot-starter dependency"
This commit reworks 40d8726 as it has introduced an unfortunate side
effect for those who are using a starter with optional starter
dependencies.

`spring-boot-starter-web` defines the json and the tomcat starter. The
latter is part of a set of starters that do not bring the base starter
and the former can be excluded to use gson rather than jackson.

When such arrangement happens, spring-boot-starter-web no longer defines
the base starter (and therefore doesn't bring the core dependencies
that Spring Boot needs to bootstrap).

This commit reviews the starters that define optional starters and
reintroduce the base starter.

Closes gh-14076
6 years ago
Jan Groot 40d8726d47 Remove redundant spring-boot-starter dependencies from starters
Closes gh-14078
6 years ago
Stephane Nicoll 4a68e2e4a1 Merge branch '2.0.x' 6 years ago
Stephane Nicoll ca4ca15ef2 Restore Jade Templates starter as it is compatible with Spring Boot 2 6 years ago
Stephane Nicoll 7e499590c6 Merge branch '2.0.x' 6 years ago
Stephane Nicoll e68dc2d3c4 Prune 3rd party starters that are not compatible with Spring Boot 2
Those can be re-added at any time there is Spring Boot 2 support

Closes gh-13510
6 years ago
Stephane Nicoll 3e24df1794 Polish "Add reference to structurizr starter"
Closes gh-13540
6 years ago
Klaus Lehner 94517b9811 Add reference to structurizr starter
See gh-13540
6 years ago
Andy Wilkinson 45fdf2ffa4 Support Tomcat 9 and Undertow 2
Closes gh-11749
Closes gh-12243
6 years ago
Stephane Nicoll 4c172eb6cd Merge branch '2.0.x' 7 years ago
Stephane Nicoll f2cc6e2ef2 Fix link of RESTEasy repository
Closes gh-13538
7 years ago
Stephane Nicoll c594768640 Remove wro4j starter reference
This starter does not look maintained anymore and there is an
alternative that we also reference and has support for Spring Boot 2.
7 years ago
Stephane Nicoll 8858c88a4c Remove GraphQL starter reference
This starter does not look maintained anymore and there is a fork of it
that we also reference and has support for Spring Boot 2.
7 years ago
Stephane Nicoll f682c77691 Polish "Add reference to dozer-spring-boot-starter"
Closes gh-13501
7 years ago
Kazuki Shimizu 9308904af7 Add reference to dozer-spring-boot-starter
See gh-13501
7 years ago
Brian Clozel 751a2b438e Upgrade duplicate finder maven plugin to 1.3.0
Closes gh-13411
7 years ago
Phillip Webb a0b6547aca Don't fail build on duplicate module-info classes
Update the duplicate-finder-maven-plugin configuration to ignore
module-info classes.

Closes gh-13403
7 years ago
Madhura Bhave 9570cd4172 Add saaj and jax-ws to webservices starter
Closes gh-13360
7 years ago
Andy Wilkinson ebb99d1c20 Merge branch '2.0.x' 7 years ago
Andy Wilkinson 1a0dfa06ab Add log4j-jul to Log4j 2 starter
Closes gh-12659
7 years ago
Brian Clozel bd8106d77f Upgrade to Spring Framework 5.1
As of Spring Framework 5.1, we're depending on the Reactor Californium
release train.
Reactor Netty is now at version 0.8 and changed its artifact
coordinates, package names and broke several APIs. Spring Framework is
now up-to-date with those changes and this commit does the same for
Spring Boot.

Note that in that process, the `NettyServerCustomizer` has been changed
since the former `HttpServerOptions.Builder` API is now gone from
Reactor Netty, and we're now relying on immutable server instances
instead of a stateful builder pattern.

See gh-13321
7 years ago
Phillip Webb 2215709165 Merge branch '2.0.x' 7 years ago
Phillip Webb e544922dd7 Merge branch '1.5.x' into 2.0.x 7 years ago
Stephane Nicoll 00a43d8f4d Merge branch '2.0.x' 7 years ago
Johnny Lim 75e591e76e Polish
Closes gh-13130
7 years ago
Stephane Nicoll 36e33a3b94 Merge branch '2.0.x' 7 years ago
evernat 91fa76a9a2 Add reference to javamelody starter
Closes gh-12877
7 years ago
Stephane Nicoll b2f34f5c20 Remove spring.provides
Closes gh-12435
7 years ago
Stephane Nicoll 12541d7efc Merge branch '2.0.x' 7 years ago
Stephane Nicoll 1c0f589c01 Simplify Joinfaces community starter entry
See gh-12867
7 years ago
Vedran Pavic 7b9c5a3dc3 Use Jersey BOM in dependency management
Closes gh-12847
7 years ago
Stephane Nicoll f55753c1dc Add reference to Axon Framework 7 years ago
Stephane Nicoll 5cba7400e1 Add reference to Flowable 7 years ago
Jichun Liu 34986ed12f Add docker-api starter to 3rd party list
See https://github.com/jliu666/docker-api-spring-boot

Closes gh-12605
7 years ago
Stephane Nicoll 703f33f175 Add reference to Sprout Platform starter
Closes gh-12599
7 years ago
Rui Figueira 5e2726f896 Configure Kotlin compiler to use -java-parameters by default
See gh-12641
7 years ago
Stephane Nicoll 0fbe3c28a2 Polish "Add reference to RabbitMQ (advanced usage) starter"
Closes gh-12427
7 years ago
Vincent Fuchs 61c44cf672 Add reference to RabbitMQ (advanced usage) starter
See gh-12427
7 years ago
Stephane Nicoll 36ed7ae699 Polish 7 years ago
Stephane Nicoll 3804466ad5 Fix description of JDBC starter
Closes gh-12387
7 years ago
Phillip Webb 38f112b9e1 Update flattened POM elements
Update flattened POM rules to satisfy maven central
requirements.

Fixes gh-12290
7 years ago
Andy Wilkinson da5bebf574 Revert "Use Jersey BOM in dependency management"
This reverts commit da7bf05c87.

Closes gh-12103
7 years ago
Simon Braconnier 1a238bae29 Add JODConverter support
Closes gh-12098
7 years ago
Vedran Pavic da7bf05c87 Use Jersey BOM in dependency management
Closes gh-12082
7 years ago
Stephane Nicoll 1772a154d7 Make sure that failsafe uses target/classes
This commit configures the failsafe plugin to use the classes directory
rather than the produced jar file as the latter can be a repackaged jar
by default.

Closes gh-11974
7 years ago
dreis2211 81459efffa Use HTTPS URLs where applicable 7 years ago
Andy Wilkinson 0aedd3f11d Exclude tomcat-annotations-api and use javax.annotations-api instead
Closes gh-10133
7 years ago
Brian Clozel 8286cbc9f3 Merge branch '1.5.x' 7 years ago
Stephane Nicoll 1ab5b833af Add reference to liquigraph 7 years ago
Stephane Nicoll 0b59751bf8 Fix Spring Data Couchbase Reactive starter
Closes gh-11245
7 years ago
Wendal Chen 9313ce8835 Add ref to Nutz.Dao Spring Boot starter
Closes gh-11212
7 years ago
Brian Clozel 9cc9cdfc1e Fix typo
See gh-11246
7 years ago
Brian Clozel eec7a8f075 Remove Web depedency from Freemarker starter
Now that Spring Boot supports Freemarker for both Spring MVC and Spring
WebFlux, the dedicated starter should not pull the Web starter
transitively and let developers manually choose the web stack.

Closes gh-11246
7 years ago
Phillip Webb 7ebe4935ac Restore dependency in `maven-shade-plugin`
Restore `spring-boot-maven-plugin` dependency in `maven-shade-plugin`
starter configuration. Required so that the shade plugin can use
`PropertiesMergingResourceTransformer` if wanted.

Fixes gh-11200
7 years ago
Andy Wilkinson 159a758e19 Revert change accidentally committed in eb6182f5 7 years ago
Andy Wilkinson eb6182f587 Remove redundant commons-logging exclusions
Closes gh-11148
7 years ago
Craig Walls 64d02f8bb5 Remove Spring Social starters and auto-configuration
See gh-11117
7 years ago
Andy Wilkinson 93cac333e8 Clean up logging dependencies and exclusions
Closes gh-11148
7 years ago
Andy Wilkinson 74200f27a6 Drop jackson-module-kotlin from spring-boot-starter-json
Previously, a dependency on jackson-module-kotlin with Kotlin excluded
was added to spring-boot-starter-json. This gave Kotlin users a smooth
experience with Jackson and JSON at minimal, we thought, cost to other
users. We have since learned that this arrangement causes a
ClassNotFoundException at runtime when Jackson is configured to find
modules via the service loader. This makes the cost of including
jackson-module-kotlin to high for non-Kotlin users so this commit
removes it.

Closes gh-11133
7 years ago
Andy Wilkinson bead5cfd2e Ignore duplicate module-info when validating starter dependencies
See gh-11178
7 years ago
Johnny Lim d9828a0aaa Polish
See gh-11143
7 years ago
Stephane Nicoll d3daded636 Reinstate spring-boot-starter-data-redis-reactive
Closes gh-11035
7 years ago
Alex Derkach 568cd6472b Add support for reactive Spring Data Couchbase
See gh-10812
7 years ago
Andy Wilkinson 2ae4678b1e Drop support for Spring Mobile
Closes gh-10884
7 years ago
Andy Wilkinson 8f4278c47f Update starters to route Log4j2 API into SLF4J by default
Closes gh-10847
7 years ago
Stephane Nicoll fd07bfd816 Polish "Add runApplication() Kotlin top level function"
Closes gh-10511
7 years ago
Stephane Nicoll 78229bdbc7 Add ref to Okta Spring Boot starter
See gh-10064
7 years ago
Madhura Bhave 8600bd7294 Upgrade to Spring Security 5.0.0.BUILD-SNAPSHOT
Following some changes in the latest snapshot this includes:
- Some updates to oauth2 client auto-config
- Security auto-config no longer relies on GlobalAuthenticationConfigurerAdapter
- Remove reactive security starter

Closes gh-10704
7 years ago
Stephane Nicoll 02be86ddca Remove unnecessary exclusion on aopalliance
Closes gh-10691
7 years ago
Phillip Webb b87f9c11f1 Fix POMs for the updated build/release process
Fix POMs following project relocations and apply CI friendly Maven
conventions.

See gh-9316
7 years ago
Phillip Webb 0ba4830b4f Relocate projects to spring-boot-project
Move projects to better reflect the way that Spring Boot is released.

The following projects are under `spring-boot-project`:

  - `spring-boot`
  - `spring-boot-autoconfigure`
  - `spring-boot-tools`
  - `spring-boot-starters`
  - `spring-boot-actuator`
  - `spring-boot-actuator-autoconfigure`
  - `spring-boot-test`
  - `spring-boot-test-autoconfigure`
  - `spring-boot-devtools`
  - `spring-boot-cli`
  - `spring-boot-docs`

See gh-9316
7 years ago