I forked the ACS commons for use in AEM 6.0 but in 6.3 the factory is missing from the /system/console/configMgr. I compared the code against the current ACS sitemap and the annotations are identical.
@Component(metatype = true,
label = "Apple SEO Site Map Servlet",
description = "SEO Site Map Servlet",
configurationFactory = true,
policy = ConfigurationPolicy.REQUIRE)
@Service
@SuppressWarnings("serial")
@Properties({@Property(name = "sling.servlet.resourceTypes", unbounded = PropertyUnbounded.ARRAY,
label = "Sling Resource Type", description = "Sling Resource Type for the Home Page component or components."),
@Property(name = "sling.servlet.selectors", value = "search-engine-sitemap", propertyPrivate = true),
@Property(name = "sling.servlet.extensions", value = "xml", propertyPrivate = true),
@Property(name = "sling.servlet.methods", value = "GET", propertyPrivate = true),
@Property(name = "webconsole.configurationFactory.nameHint",
value = "Site Map on resource types: [{sling.servlet.resourceTypes}]")})
Based on the discussion in the comments above, the issue was with setting up maven plugin to generate the scr descriptor and not the usage of annotations themselves.
Some additional information on how these annotations work :
The annotations are actually processed while the bundle is being created to generate xml files. It is the generated XML output that is used in the OSGI container. If you have a reason to believe that the annotations you have used are correct, then verify the xml that has been generated.
Before AEM 6.3 the general practice was to use felix scr annotations with maven-scr-plugin. Since 6.3 you can use annotations from the official OSGI package, this was added in R6 and hence the felix annotations were deprecated. You no longer need maven-scr-plugin and maven-bundle-plugin will process OSGI R6 annotations.
Since it is the xml that is used by the container, there's no reason for service declarations from <6.3 to stop working on 6.3. If there is an issue, it is typically in the build settings.
The scr description generated can be found at the following location of your workspace target/classes/OSGI-INF & target/classes/META-INF.
If you use OSGI R6 annotations and maven-bundle-plugin and don't see the generated xml files, add <exportScr>true</exportScr>
to configuration section of the plugin config in POM. The POM generated by Adobe archetype skips this setting as of version 12