A lightweight Maven plugin that scans your Java project for @Todo annotations and outputs a neat, organized report. Perfect for keeping track of pending tasks in your codebase without leaving your IDE.
- ✅ Scans classes, methods, and fields for
@Todoannotations. - ✅ Generates a readable table with description, assignee, priority, due date, and location.
- ✅ Supports dynamic base package scanning.
- ✅ Thread-safe and compatible with compile + runtime dependencies.
- ✅ Extensible and easy to integrate into Maven projects.
Add the plugin to your Maven project’s pom.xml:
<build>
<plugins>
<plugin>
<groupId>io.github.odunlamizo</groupId>
<artifactId>todus-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>list</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>Note: To use
@Todoannotations in your project, you also need to include the core dependency:
<dependency>
<groupId>io.github.odunlamizo</groupId>
<artifactId>todus-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>Run the plugin from the command line:
mvn todus:listOptional: Specify a base package to scan:
mvn todus:list -Dtodus.basePackage=com.exampleThe plugin will scan your project and print a table like:
Description Assignee Priority Due Location
----------------------------------------------------------------------------------------------------------------------------------
Check if kyc already exists Zacchaeus HIGH 2025-12-31 com.schoolsort.account.service.KycServiceImpl#submitKyc
Send email to user to reset password Zacchaeus HIGH 2025-12-31 com.schoolsort.account.service.UserServiceImpl#createUser
You can annotate classes, methods, or fields with @Todo:
@Todo(
value = "Implement validation for input",
assignee = "Zacchaeus",
priority = Priority.HIGH,
due = "2025-12-31"
)
public class MyService {
//...
}- Scanning – The plugin uses your project’s classpath and optional base package to locate all classes.
- Annotation Extraction – It reads
@Todoannotations on classes, methods, and fields. - Table Output – Generates a clean table with description, assignee, priority, due date, and location.
Contributions are welcome!
- Fork the repository
- Create a branch:
git checkout -b feature/my-feature - Make your changes and commit:
git commit -am 'Add new feature' - Push to the branch:
git push origin feature/my-feature - Open a Pull Request
MIT License © 2025 Zacchaeus Odunlami