Skip to content

Conversation

@jamesfredley
Copy link
Contributor

@jamesfredley jamesfredley commented Aug 18, 2025

This started by evaluating broken links in grails-doc, but expanded from there to correct the same URLs across the project. It updates grails.org URLs to grails.apache.org and updates all links, which can be changed, to https.

In some cases the best available URL was used to replace one that returned a 404. In the rare case where there was no URL available, like in the instance of a 15 year old blog post, the URL was removed.

It now represents around 1,000 fixed or updated URLs.

There are a few grails.util.* api links which still 404, due to #14978

Broken links were identified and verified as fixed using https://github.com/lycheeverse/lychee/releases/tag/lychee-v0.19.1.

grails-data and groovydocs were skipped and issues will be created to work on those broken URLs. #14990 & #14991

./gradlew grails-doc:build
cd \grails-doc\build\docs
lychee-x86_64-windows.exe . --format markdown --output results.md --exclude-path api --exclude-path grails-data --exclude-path grails-data/hibernate5/api --exclude ".*.css$" --exclude "^http://localhost" --exclude-path guide/pages

review results.md

Here is the summary from the latest run. https://dev.mysql.com/downloads/connector/j/ are false positives.

Summary

Status Count
🔍 Total 97352
✅ Successful 96709
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 637
❓ Unknown 0
🚫 Errors 6
## Errors per input

### Errors in .\guide\conf.html

* [ERROR] </grails-core/grails-doc/build/docs/api/grails/util/Environment.html> | Cannot find file
* [403] <https://dev.mysql.com/downloads/connector/j/> | Rejected status code (this depends on your "accept" configuration): Forbidden

### Errors in .\guide\plugins.html

* [ERROR] </grails-core/grails-doc/build/docs/api/grails/util/BuildScope.html> | Cannot find file

### Errors in .\guide\single.html

* [ERROR] </grails-core/grails-doc/build/docs/api/grails/util/BuildScope.html> | Cannot find file
* [ERROR] </grails-core/grails-doc/build/docs/api/grails/util/Environment.html> | Cannot find file
* [403] <https://dev.mysql.com/downloads/connector/j/> | Error (cached)

@jamesfredley jamesfredley moved this to In Progress in Apache Grails Aug 18, 2025
@jamesfredley jamesfredley added this to the grails:7.0.0 milestone Aug 18, 2025
@jamesfredley jamesfredley self-assigned this Aug 18, 2025
@jamesfredley jamesfredley changed the title Cleanup broken links, update links which have changed, standardize link syntax Cleanup broken documentation links, update links which have changed, standardize link syntax Aug 18, 2025
Copy link
Contributor

@jdaugherty jdaugherty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great Job!

My only concern is:

The license and notice files have to match exactly since it is spelled out that way in the licenses. We can change headers, etc, but I don't believe we can change the LICENSE and NOTICE files

# Conflicts:
#	grails-forge/grails-forge-core/src/main/java/org/grails/forge/feature/reloading/Springloaded.java
@jamesfredley jamesfredley merged commit 9d81e87 into 7.0.x Aug 20, 2025
33 checks passed
@jamesfredley jamesfredley deleted the more-url-cleanup branch August 20, 2025 16:47
@github-project-automation github-project-automation bot moved this from In Progress to Done in Apache Grails Aug 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants