So how can I ban a give class from my project?
It looked like a job for maven enforcer plugin! Nop, that was no good. Enforcer has no rule for this. May be extra enforcer rules? No rule there for that too.
After searching a little bit more I found a plugin to do that!
Restrict-maven-plugin allowed me to do so.
<plugin> <groupId>com.yamanyar</groupId> <artifactId>restrict-maven-plugin</artifactId> <version>0.6</version> <executions> <execution> <phase>process-classes</phase> <goals> <goal>restrict</goal> </goals> </execution> </executions> <configuration> <continueOnError>false</continueOnError> <restrictions> <restriction>com.contaazul.* to javax.ws.rs.Path</restriction> </restrictions> </configuration> </plugin>
Easy no?
Now if someone add this by mistake maven will let us know:
[error] Restricted access from:(com.contaazul.MyClass.class) com.contaazul.MyClass to: javax.ws.rs.Path due to rule [1-1] [error] Build is broken due to 1 restriction policies! [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 45.133 s (Wall Clock) [INFO] Finished at: 2014-07-24T10:20:44-03:00 [INFO] Final Memory: 60M/1247M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal com.yamanyar:restrict-maven-plugin:0.4:restrict (default) on project contaazul-app-business: There are 1 access exceptions! -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Way better then catching a bug latter, no?