[
https://issues.apache.org/jira/browse/FELIX-4512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Simone Tripodi updated FELIX-4512:
----------------------------------
Attachment: Screen Shot 2014-05-13 at 11.49.44 PM.pdf
FELIX-4512.1.patch
Please have a look at new proposal contained in FELIX-4512.1.patch - plugin
works in almost exactly the same (it does not dump the console log in a textual
file)
this is how console log looks now:
{noformat}
[INFO] --- maven-bundle-plugin:2.4.1-SNAPSHOT:baseline (baseline) @
org.apache.felix.http.api ---
[INFO] Baseline Report - Generated by Apache Felix Maven Bundle Plugin on
2014-05-13T23:51Z based on Bnd - see http://www.aqute.biz/Bnd/Bnd
[INFO] Comparing bundle org.apache.felix.http.api version 2.3.0-SNAPSHOT to
version 2.2.2
[INFO]
[INFO] PACKAGE_NAME DELTA CUR_VER
BASE_VER REC_VER WARNINGS
[INFO] = ================================================== ==========
========== ========== ========== ==========
[INFO] * org.apache.felix.http.api major 2.0.4
2.0.4 3.0.0 Version increase required
[INFO] > interface org.apache.felix.http.api.ExtHttpService
[INFO] + method createDefaultHttpContext()
[INFO] + access abstract
[INFO] + return org.osgi.service.http.HttpContext
[INFO] + method doSomething()
[INFO] + access abstract
[INFO] + method
registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)
[INFO] + access abstract
[INFO] + method
registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)
[INFO] + access abstract
[INFO] + method unregister(java.lang.String)
[INFO] + access abstract
[INFO] + interface org.apache.felix.http.api.ExtHttpServiceRuntime
[INFO] + access abstract
[INFO] + implements org.osgi.service.http.runtime.HttpServiceRuntime
[INFO] + method getRuntimeDTO()
[INFO] + access abstract
[INFO] + return org.osgi.dto.DTO
[INFO] + return org.osgi.service.http.runtime.dto.RuntimeDTO
[INFO] + method
registerFilter(org.osgi.service.http.runtime.dto.FilterDTO)
[INFO] + access abstract
[INFO] + method
registerServlet(org.osgi.service.http.runtime.dto.ServletDTO)
[INFO] + access abstract
[INFO]
-----------------------------------------------------------------------------------------------------------
[INFO] + org.osgi.dto added 1.0.0
0.0.0 1.0.0 -
[INFO] + class org.osgi.dto.DTO
[INFO] + access abstract
[INFO] + method <init>()
[INFO] + method clone()
[INFO] + access protected
[INFO] + method equals(java.lang.Object)
[INFO] + return boolean
[INFO] + method finalize()
[INFO] + access protected
[INFO] + method hashCode()
[INFO] + return int
[INFO] + method toString()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.CharSequence
[INFO] + return java.lang.Comparable
[INFO] + return java.lang.String
[INFO] + version 1.0.0
[INFO]
-----------------------------------------------------------------------------------------------------------
[INFO] + org.osgi.service.http added 1.3.0
0.0.0 1.0.0 Excessive version increase
[INFO] + class org.osgi.service.http.NamespaceException
[INFO] + extends java.lang.Exception
[INFO] + extends java.lang.Throwable
[INFO] + implements java.io.Serializable
[INFO] + method <init>(java.lang.String)
[INFO] + method <init>(java.lang.String,java.lang.Throwable)
[INFO] + method clone()
[INFO] + access protected
[INFO] + method equals(java.lang.Object)
[INFO] + return boolean
[INFO] + method fillInStackTrace()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.Throwable
[INFO] + method finalize()
[INFO] + access protected
[INFO] + method getCause()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.Throwable
[INFO] + method getException()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.Throwable
[INFO] + method getLocalizedMessage()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.CharSequence
[INFO] + return java.lang.Comparable
[INFO] + return java.lang.String
[INFO] + method getMessage()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.CharSequence
[INFO] + return java.lang.Comparable
[INFO] + return java.lang.String
[INFO] + method getStackTrace()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.StackTraceElement[]
[INFO] + method hashCode()
[INFO] + return int
[INFO] + method initCause(java.lang.Throwable)
[INFO] + return java.io.Serializable
[INFO] + return java.lang.Throwable
[INFO] + method printStackTrace()
[INFO] + method printStackTrace(java.io.PrintStream)
[INFO] + method printStackTrace(java.io.PrintWriter)
[INFO] + method setStackTrace(java.lang.StackTraceElement[])
[INFO] + method toString()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.CharSequence
[INFO] + return java.lang.Comparable
[INFO] + return java.lang.String
[INFO] + interface org.osgi.service.http.HttpContext
[INFO] + access abstract
[INFO] + field java.lang.String AUTHENTICATION_TYPE
[INFO] + access final
[INFO] + access static
[INFO] + constant org.osgi.service.http.authentication.type
[INFO] + field java.lang.String AUTHORIZATION
[INFO] + access final
[INFO] + access static
[INFO] + constant org.osgi.service.useradmin.authorization
[INFO] + field java.lang.String REMOTE_USER
[INFO] + access final
[INFO] + access static
[INFO] + constant org.osgi.service.http.authentication.remote.user
[INFO] + method getMimeType(java.lang.String)
[INFO] + access abstract
[INFO] + return java.io.Serializable
[INFO] + return java.lang.CharSequence
[INFO] + return java.lang.Comparable
[INFO] + return java.lang.String
[INFO] + method getResource(java.lang.String)
[INFO] + access abstract
[INFO] + return java.io.Serializable
[INFO] + return java.net.URL
[INFO] + method
handleSecurity(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
[INFO] + access abstract
[INFO] + return boolean
[INFO] + annotated org.osgi.annotation.versioning.ConsumerType
[INFO] + interface org.osgi.service.http.HttpService
[INFO] + access abstract
[INFO] + method createDefaultHttpContext()
[INFO] + access abstract
[INFO] + return org.osgi.service.http.HttpContext
[INFO] + method
registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)
[INFO] + access abstract
[INFO] + method
registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)
[INFO] + access abstract
[INFO] + method unregister(java.lang.String)
[INFO] + access abstract
[INFO] + annotated org.osgi.annotation.versioning.ProviderType
[INFO] + version 1.3.0
[INFO]
-----------------------------------------------------------------------------------------------------------
[INFO] + org.osgi.service.http.runtime added 1.3.0
0.0.0 1.0.0 Excessive version increase
[INFO] + class org.osgi.service.http.runtime.HttpServiceRuntimeConstants
[INFO] + access final
[INFO] + field java.lang.String HTTP_SERVICE_ENDPOINT_ATTRIBUTE
[INFO] + access final
[INFO] + access static
[INFO] + constant osgi.http.endpoint
[INFO] + method clone()
[INFO] + access protected
[INFO] + method equals(java.lang.Object)
[INFO] + return boolean
[INFO] + method finalize()
[INFO] + access protected
[INFO] + method hashCode()
[INFO] + return int
[INFO] + method toString()
[INFO] + return java.io.Serializable
[INFO] + return java.lang.CharSequence
[INFO] + return java.lang.Comparable
[INFO] + return java.lang.String
[INFO] + interface org.osgi.service.http.runtime.HttpServiceRuntime
[INFO] + access abstract
[INFO] + method getRuntimeDTO()
[INFO] + access abstract
[INFO] + return org.osgi.dto.DTO
[INFO] + return org.osgi.service.http.runtime.dto.RuntimeDTO
[INFO] + annotated org.osgi.annotation.versioning.ProviderType
[INFO] + version 1.3.0
[INFO]
-----------------------------------------------------------------------------------------------------------
[ERROR] org.apache.felix.http.api: Version increase required; detected 2.0.4,
suggested 3.0.0
[WARNING] org.osgi.service.http: Excessive version increase; detected 1.3.0,
suggested 1.0.0
[WARNING] org.osgi.service.http.runtime: Excessive version increase; detected
1.3.0, suggested 1.0.0
[INFO] Baseline analisys complete, 1 error(s), 2 warning(s)
{noformat}
the XML representation has been enhanced
{code}
<baseline version="1.0.0" vendor="The Apache Software Foundation"
vendorURL="http://www.apache.org/" generator="Apache Felix Maven Bundle Plugin"
generatorURL="http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html"
analyzer="Bnd" analyzerURL="http://www.aqute.biz/Bnd/Bnd"
generatedOn="2014-05-13T23:51Z" bundleName="org.apache.felix.http.api"
currentVersion="2.3.0-SNAPSHOT" previousVersion="2.2.2">
<package name="org.apache.felix.http.api" delta="major">
<mismatch>true</mismatch>
<newerVersion>2.0.4</newerVersion>
<olderVersion>2.0.4</olderVersion>
<suggestedVersion>3.0.0</suggestedVersion>
<error>Version increase required</error>
<attributes>
<version>2.0.4</version>
<uses>javax.servlet,org.osgi.service.http,org.osgi.service.http.runtime</uses>
</attributes>
<interface name="org.apache.felix.http.api.ExtHttpService" delta="major">
<method name="createDefaultHttpContext()" delta="added">
<access name="abstract" delta="added"/>
<return name="org.osgi.service.http.HttpContext" delta="added"/>
</method>
<method name="doSomething()" delta="added">
<access name="abstract" delta="added"/>
</method>
<method
name="registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)"
delta="added">
<access name="abstract" delta="added"/>
</method>
<method
name="registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)"
delta="added">
<access name="abstract" delta="added"/>
</method>
<method name="unregister(java.lang.String)" delta="added">
<access name="abstract" delta="added"/>
</method>
</interface>
<interface name="org.apache.felix.http.api.ExtHttpServiceRuntime"
delta="added">
<access name="abstract" delta="added"/>
<implements name="org.osgi.service.http.runtime.HttpServiceRuntime"
delta="added"/>
<method name="getRuntimeDTO()" delta="added">
<access name="abstract" delta="added"/>
<return name="org.osgi.dto.DTO" delta="added"/>
<return name="org.osgi.service.http.runtime.dto.RuntimeDTO"
delta="added"/>
</method>
<method
name="registerFilter(org.osgi.service.http.runtime.dto.FilterDTO)"
delta="added">
<access name="abstract" delta="added"/>
</method>
<method
name="registerServlet(org.osgi.service.http.runtime.dto.ServletDTO)"
delta="added">
<access name="abstract" delta="added"/>
</method>
</interface>
</package>
<package name="org.osgi.dto" delta="added">
<mismatch>false</mismatch>
<newerVersion>1.0.0</newerVersion>
<olderVersion>0.0.0</olderVersion>
<suggestedVersion>1.0.0</suggestedVersion>
<attributes>
<version>1.0.0</version>
</attributes>
<class name="org.osgi.dto.DTO" delta="added">
<access name="abstract" delta="added"/>
<method name="<init>()" delta="added"/>
<method name="clone()" delta="added">
<access name="protected" delta="added"/>
</method>
<method name="equals(java.lang.Object)" delta="added">
<return name="boolean" delta="added"/>
</method>
<method name="finalize()" delta="added">
<access name="protected" delta="added"/>
</method>
<method name="hashCode()" delta="added">
<return name="int" delta="added"/>
</method>
<method name="toString()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.CharSequence" delta="added"/>
<return name="java.lang.Comparable" delta="added"/>
<return name="java.lang.String" delta="added"/>
</method>
</class>
<version name="1.0.0" delta="added"/>
</package>
<package name="org.osgi.service.http" delta="added">
<mismatch>false</mismatch>
<newerVersion>1.3.0</newerVersion>
<olderVersion>0.0.0</olderVersion>
<suggestedVersion>1.0.0</suggestedVersion>
<warning>Excessive version increase</warning>
<attributes>
<version>1.3.0</version>
<uses>javax.servlet,javax.servlet.http</uses>
</attributes>
<class name="org.osgi.service.http.NamespaceException" delta="added">
<extends name="java.lang.Exception" delta="added"/>
<extends name="java.lang.Throwable" delta="added"/>
<implements name="java.io.Serializable" delta="added"/>
<method name="<init>(java.lang.String)" delta="added"/>
<method name="<init>(java.lang.String,java.lang.Throwable)"
delta="added"/>
<method name="clone()" delta="added">
<access name="protected" delta="added"/>
</method>
<method name="equals(java.lang.Object)" delta="added">
<return name="boolean" delta="added"/>
</method>
<method name="fillInStackTrace()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.Throwable" delta="added"/>
</method>
<method name="finalize()" delta="added">
<access name="protected" delta="added"/>
</method>
<method name="getCause()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.Throwable" delta="added"/>
</method>
<method name="getException()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.Throwable" delta="added"/>
</method>
<method name="getLocalizedMessage()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.CharSequence" delta="added"/>
<return name="java.lang.Comparable" delta="added"/>
<return name="java.lang.String" delta="added"/>
</method>
<method name="getMessage()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.CharSequence" delta="added"/>
<return name="java.lang.Comparable" delta="added"/>
<return name="java.lang.String" delta="added"/>
</method>
<method name="getStackTrace()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.StackTraceElement[]" delta="added"/>
</method>
<method name="hashCode()" delta="added">
<return name="int" delta="added"/>
</method>
<method name="initCause(java.lang.Throwable)" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.Throwable" delta="added"/>
</method>
<method name="printStackTrace()" delta="added"/>
<method name="printStackTrace(java.io.PrintStream)" delta="added"/>
<method name="printStackTrace(java.io.PrintWriter)" delta="added"/>
<method name="setStackTrace(java.lang.StackTraceElement[])"
delta="added"/>
<method name="toString()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.CharSequence" delta="added"/>
<return name="java.lang.Comparable" delta="added"/>
<return name="java.lang.String" delta="added"/>
</method>
</class>
<interface name="org.osgi.service.http.HttpContext" delta="added">
<access name="abstract" delta="added"/>
<field name="java.lang.String AUTHENTICATION_TYPE" delta="added">
<access name="final" delta="added"/>
<access name="static" delta="added"/>
<constant name="org.osgi.service.http.authentication.type"
delta="added"/>
</field>
<field name="java.lang.String AUTHORIZATION" delta="added">
<access name="final" delta="added"/>
<access name="static" delta="added"/>
<constant name="org.osgi.service.useradmin.authorization"
delta="added"/>
</field>
<field name="java.lang.String REMOTE_USER" delta="added">
<access name="final" delta="added"/>
<access name="static" delta="added"/>
<constant name="org.osgi.service.http.authentication.remote.user"
delta="added"/>
</field>
<method name="getMimeType(java.lang.String)" delta="added">
<access name="abstract" delta="added"/>
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.CharSequence" delta="added"/>
<return name="java.lang.Comparable" delta="added"/>
<return name="java.lang.String" delta="added"/>
</method>
<method name="getResource(java.lang.String)" delta="added">
<access name="abstract" delta="added"/>
<return name="java.io.Serializable" delta="added"/>
<return name="java.net.URL" delta="added"/>
</method>
<method
name="handleSecurity(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)"
delta="added">
<access name="abstract" delta="added"/>
<return name="boolean" delta="added"/>
</method>
<annotated name="org.osgi.annotation.versioning.ConsumerType"
delta="added"/>
</interface>
<interface name="org.osgi.service.http.HttpService" delta="added">
<access name="abstract" delta="added"/>
<method name="createDefaultHttpContext()" delta="added">
<access name="abstract" delta="added"/>
<return name="org.osgi.service.http.HttpContext" delta="added"/>
</method>
<method
name="registerResources(java.lang.String,java.lang.String,org.osgi.service.http.HttpContext)"
delta="added">
<access name="abstract" delta="added"/>
</method>
<method
name="registerServlet(java.lang.String,javax.servlet.Servlet,java.util.Dictionary,org.osgi.service.http.HttpContext)"
delta="added">
<access name="abstract" delta="added"/>
</method>
<method name="unregister(java.lang.String)" delta="added">
<access name="abstract" delta="added"/>
</method>
<annotated name="org.osgi.annotation.versioning.ProviderType"
delta="added"/>
</interface>
<version name="1.3.0" delta="added"/>
</package>
<package name="org.osgi.service.http.runtime" delta="added">
<mismatch>false</mismatch>
<newerVersion>1.3.0</newerVersion>
<olderVersion>0.0.0</olderVersion>
<suggestedVersion>1.0.0</suggestedVersion>
<warning>Excessive version increase</warning>
<attributes>
<version>1.3.0</version>
</attributes>
<class name="org.osgi.service.http.runtime.HttpServiceRuntimeConstants"
delta="added">
<access name="final" delta="added"/>
<field name="java.lang.String HTTP_SERVICE_ENDPOINT_ATTRIBUTE"
delta="added">
<access name="final" delta="added"/>
<access name="static" delta="added"/>
<constant name="osgi.http.endpoint" delta="added"/>
</field>
<method name="clone()" delta="added">
<access name="protected" delta="added"/>
</method>
<method name="equals(java.lang.Object)" delta="added">
<return name="boolean" delta="added"/>
</method>
<method name="finalize()" delta="added">
<access name="protected" delta="added"/>
</method>
<method name="hashCode()" delta="added">
<return name="int" delta="added"/>
</method>
<method name="toString()" delta="added">
<return name="java.io.Serializable" delta="added"/>
<return name="java.lang.CharSequence" delta="added"/>
<return name="java.lang.Comparable" delta="added"/>
<return name="java.lang.String" delta="added"/>
</method>
</class>
<interface name="org.osgi.service.http.runtime.HttpServiceRuntime"
delta="added">
<access name="abstract" delta="added"/>
<method name="getRuntimeDTO()" delta="added">
<access name="abstract" delta="added"/>
<return name="org.osgi.dto.DTO" delta="added"/>
<return name="org.osgi.service.http.runtime.dto.RuntimeDTO"
delta="added"/>
</method>
<annotated name="org.osgi.annotation.versioning.ProviderType"
delta="added"/>
</interface>
<version name="1.3.0" delta="added"/>
</package>
{code}
Moreover the plugin can be configured inside the {{report}} section to generate
an html report page as shown in the attached _Screen Shot 2014-05-13 at
11.49.44 PM.pdf_ document.
I hope you'll like it, have fun!
> Add a new Mojo to invoke the BND Baseline tool
> ----------------------------------------------
>
> Key: FELIX-4512
> URL: https://issues.apache.org/jira/browse/FELIX-4512
> Project: Felix
> Issue Type: New Feature
> Components: Maven Bundle Plugin
> Affects Versions: maven-bundle-plugin-2.4.0
> Reporter: Simone Tripodi
> Fix For: maven-bundle-plugin-2.4.1
>
> Attachments: FELIX-4512.1.patch, FELIX-4512.patch, Screen Shot
> 2014-05-13 at 11.49.44 PM.pdf
>
>
> The BND 2.2.0 library contains an extraordinary tool called
> [Baseline|http://www.aqute.biz/Bnd/Versioning] (see Baselining paragraph)
> that compares the public API of a bundle with the public API of another
> bundle.
> It would be really useful to have this tool in the {{maven-bundle-plugin}} in
> order to keep track of APIs modifications during development time.
--
This message was sent by Atlassian JIRA
(v6.2#6252)