Условная реализация API сервлета javax или jakarta в зависимости от того, что находится в пути к классам.
Я работаю над библиотекой с открытым исходным кодом, которая используетservlet-api
. Рассмотрим этот простой интерфейс:
import javax.servlet.Filter;
interface HttpFilter extends Filter {
}
я хочу обобщитьHttpFilter
продлить либоjavax.servlet.Filter
илиjakarta.servlet.Filter
в зависимости от того, какой из них находится на пути к классам. Я должен подчеркнуть, что библиотека не основана ни на Spring, ни на Spring Boot.
Раздел зависимостей Maven будет выглядеть так:
<dependencies>
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
Есть предложение использовать что-то вроде плагина ANTLR 4 Maven для генерации исходников на лету, но я этим раньше не занимался и не знаю, насколько это сложно. Прежде чем делать дальнейшие инвестиции в это, я хотел бы услышать мнение сообщества, поскольку могут быть еще лучшие варианты.