Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

TODO(info) Ramverket byggs med och för Java 17 och kräver att din utvecklingsmiljö har tillgång till detta.

För att utveckla tjänster tillhandahåller ramverket en föräldra-artefakt som bör användas enligt:

Code Block
languagexml
<?xml version="1.0"?>
<project
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
        xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>se.sundsvall.dept44</groupId>
        <artifactId>dept44-service-parent</artifactId>
        <version>[dept44-version att använda]</version>
    </parent>
    <groupId>se.sundsvall</groupId>
    <artifactId>ett-api</artifactId>
    <version>0.1-SNAPSHOT</version>
    
    ...
</project>


(info) Ovanstående pom.xml tillsammans med en applikationsklass annoterad med @ServiceApplication och en main-metod, samt en application.properties liknande nedan utgör i sig ett skal för en fungerande tjänst:

Code Block
languagejava
@ServiceApplication
public class MyApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

Code Block
openapi.name=my-api
openapi.title=My API
openapi.version=0.1


Artefakten fungerar som en Maven-POM och ser därmed till att rätt versioner av de beroenden som ramverket tillhandahåller används, samt att viss gemensam konfiguration utförs. Den ser även till att ramverkets bas-starter (dept44-starter) alltid inkluderas i utvecklade tjänster. Utöver den är det fritt fram att inkludera starters efter behov.

Vidare aktiveras filtrering på resurser i katalogerna src/main/resources och src/test/resources så att man i resurserna kan använda platshållare på formatet @propertyNamn@ , såsom till exempel @project.version@.

Föräldra-artefakten konfigurerar även ett antal Maven-plugins:

  • spring-boot-maven-plugin - för att paketera applikationen/tjänsten

  • maven-resources-plugin - för att hantera projekt-resurser

  • maven-surefire-plugin - för att exekvera enhetstester

  • maven-failsafe-plugin - för att exekvera integrationstester

  • build-helper-maven-plugin - för att sätta upp extra källkods- och resursrötter för integrationstester - src/integration-test/java respektive src/integration-test/resources

  • jacoco-maven-plugin - för att säkerställa kodtäckning.

    Utan extra konfiguration kommer jacoco-maven-plugin att applicera kodtäckningsregler för alla klasser, vilket kanske inte alltid är önskvärt. I det fallet kan man konfigurera undantag genom att lägga till följande i sin pom.xml:

    Code Block
    languagexml
    ...
    <plugins>
        <plugin>
    		<groupId>org.jacoco</groupId>
    		<artifactId>jacoco-maven-plugin</artifactId>
    		<configuration>
    			<excludes>
    				<exclude>**/my/package/FirstClassToExclude*</exclude>
    				<exclude>**/my/package/ignored/**/*</exclude>
    			</excludes>
    		</configuration>
    	</plugin>
    </plugins>
    ...


Som regel används 85% (0.85) för kodradstäckning och 50% (0.5) för branch-täckning. Detta kan om så önskas överstyras genom att i sin pom.xml sätta properties coverage.line.level respektive coverage.branch.level till önskad täckningsgrad, t.ex 0.8 respektive 0.6.

Vill man generera JAR-filer innehållande källkod och JavaDoc-dokumentation för sin tjänst kan man i sin pom.xml sätta maven.source.skip respektive maven.javadoc.skip till true. Som standard är dessa inaktiverade, d.v.s. satta till false.