Apache RAT, pertenece al proyecto Apache Creadur. Por lo poco que he entendido, es para agregar licencias a todas tus clases, ficheros. Tal y como esta cualquier clase de Apache, donde aparece arriba del todo, despues de la palabra reservada package, la licencia.
Pero para salir de dudas, me he descargado la libreria y he realizado estas pruebas.
Dentro de la carpeta descomprimida, he creado la carpeta «test». En esta carpeta he metido una clase, que ha resultado ser una interfaz de un web service.
Ubicado en la carpeta descomprimida he ejecutado lo siguiente:
E01740@ES-D-04744LT /cygdrive/c/Software/apache-rat-0.10
$ java -jar apache-rat-0.10.jar --help
usage: java rat.report [options] [DIR|TARBALL]
Options
-A,--addLicense Add the default licence header to any file
with an unknown licence that is not in the
exclusion list. By default new files will
be created with the licence header, to
force the modification of existing files
use the --force option.
-a,--addLicence Add the default licence header to any file
with an unknown licence that is not in the
exclusion list. By default new files will
be created with the licence header, to
force the modification of existing files
use the --force option.
-c,--copyright <arg> The copyright message to use in the
licence headers, usually in the form of
"Copyright 2008 Foo"
-d,--dir Used to indicate source when using
--exclude
-E,--exclude-file <fileName> Excludes files matching regular expression
in <file> Note that --dir is required when
using this parameter.
-e,--exclude <expression> Excludes files matching wildcard
<expression>. Note that --dir is required
when using this parameter. Allows multiple
arguments.
-f,--force Forces any changes in files to be written
directly to the source files (i.e. new
files are not created)
-h,--help Print help for the Rat command line
interface and exit
-s,--stylesheet <arg> XSLT stylesheet to use when creating the
report. Not compatible with -x
-x,--xml Output the report in raw XML format. Not
compatible with -s
NOTE:
Rat is really little more than a grep ATM
Rat is also rather memory hungry ATM
Rat is very basic ATM
Rat highlights possible issues
Rat reports require intepretation
Rat often requires some tuning before it runs well against a project
Rat relies on heuristics: it may miss issues
Asi que si no lo he entendido mal. Si ejecuto esto:
$ java -jar apache-rat-0.10.jar -d test -a
*****************************************************
Summary
-------
Generated at: 2014-04-30T09:39:43+02:00
Notes: 0
Binaries: 0
Archives: 0
Standards: 1
Apache Licensed: 0
Generated Documents: 0
JavaDocs are generated and so license header is optional
Generated files do not required license headers
1 Unknown Licenses
*******************************
Unapproved licenses:
test/Cargos.java
*******************************
Archives:
*****************************************************
Files with Apache License headers will be marked AL
Binary files (which do not require AL headers) will be marked B
Compressed archives will be marked A
Notices, licenses etc will be marked N
!????? test/Cargos.java
*****************************************************
Printing headers for files without AL header...
=======================================================================
==test/Cargos.java
=======================================================================
package es.depontevedra.soap.cargows.services;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.BindingType;
@WebService
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public interface Cargos {
@WebMethod(action="crearCargo")
public String crearCargo(String xml);
@WebMethod(action="modificarCargo")
public String modificarCargo(String xml);
@WebMethod(action="anularCargo")
public String anularCargo(String xml);
@WebMethod(action="consultarCargo")
public String consultarCargo(String xml);
@WebMethod(action="consultarConceptos")
public String consultarConceptos(String xml);
@WebMethod(action="consultarTributos")
public String consultarTributos(String xml);
@WebMethod(action="obtenerRecibo")
public String obtenerRecibo(String xml);
}
Parece que ha tocado algo en mi clase. La reviso:
package es.depontevedra.soap.cargows.services;
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.BindingType;
@WebService
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public interface Cargos {
@WebMethod(action="crearCargo")
public String crearCargo(String xml);
@WebMethod(action="modificarCargo")
public String modificarCargo(String xml);
@WebMethod(action="anularCargo")
public String anularCargo(String xml);
@WebMethod(action="consultarCargo")
public String consultarCargo(String xml);
@WebMethod(action="consultarConceptos")
public String consultarConceptos(String xml);
@WebMethod(action="consultarTributos")
public String consultarTributos(String xml);
@WebMethod(action="obtenerRecibo")
public String obtenerRecibo(String xml);
}
Me ha gustado eso del copyright que aparece en la ayuda. Voy a probar:
$ java -jar apache-rat-0.10.jar -d test -a -c "Jose Manuel Prieto Palacios"
Mi clase se queda:
package es.depontevedra.soap.cargows.services;
/*
*
* Jose Manuel Prieto Palacios
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.BindingType;
@WebService
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
public interface Cargos {
@WebMethod(action="crearCargo")
public String crearCargo(String xml);
@WebMethod(action="modificarCargo")
public String modificarCargo(String xml);
@WebMethod(action="anularCargo")
public String anularCargo(String xml);
@WebMethod(action="consultarCargo")
public String consultarCargo(String xml);
@WebMethod(action="consultarConceptos")
public String consultarConceptos(String xml);
@WebMethod(action="consultarTributos")
public String consultarTributos(String xml);
@WebMethod(action="obtenerRecibo")
public String obtenerRecibo(String xml);
}
Configurarlo con maven
Uso basico
En la fase de verificacion
Añadiendo un informe cuando el proyecto se compila
Aplicar una licencia personalizada
En maven simplemente se comprueba que todos los ficheros tienen licencia. Usar solo como verificador.