anchor.diff:           <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ", UTC} lvl='%level', log='%logger{0}', th='%thread', xff='%X{req.xForwardedFor}', rId='%X{req.requestId}', tok='%X{kb.userToken}', aRId='%X{kb.accountRecordId}', tRId='%X{kb.tenantRecordId}', %maskedMsg%n</pattern>
         </encoder>
      </appender>
  -   <!-- JDBC appenders -->
  -   <appender name="SIFT-jdbc-sqlonly" class="ch.qos.logback.classic.sift.SiftingAppender">
  -      <discriminator class="org.killbill.billing.server.log.ThreadNameBasedDiscriminator" />
  -      <sift>
  -         <appender name="jdbc-sqlonly-${threadName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
  -            <file>${LOGS_DIR:-./logs}/jdbc-sqlonly.${threadName}.out</file>
  -            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  -               <!-- rollover daily -->
  -               <fileNamePattern>${LOGS_DIR:-./logs}/jdbc-sqlonly-%d{yyyy-MM-dd}.%i.${threadName}.out.gz</fileNamePattern>
  -               <maxHistory>3</maxHistory>
  -               <cleanHistoryOnStart>true</cleanHistoryOnStart>
  -               <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  -                  <!-- or whenever the file size reaches 100MB -->
  -                  <maxFileSize>100MB</maxFileSize>
  -               </timeBasedFileNamingAndTriggeringPolicy>
  -            </rollingPolicy>
  -            <encoder>
  -               <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ", UTC} lvl='%level', log='%logger{0}', th='%thread', xff='%X{req.xForwardedFor}', rId='%X{req.requestId}', tok='%X{kb.userToken}', aRId='%X{kb.accountRecordId}', tRId='%X{kb.tenantRecordId}', %maskedMsg%n</pattern>
  -            </encoder>
  -         </appender>
  -      </sift>
  -   </appender>
  -   <appender name="SIFT-jdbc-sqltiming" class="ch.qos.logback.classic.sift.SiftingAppender">
  -      <discriminator class="org.killbill.billing.server.log.ThreadNameBasedDiscriminator" />
  -      <sift>
  -         <appender name="jdbc-sqltiming-${threadName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
  -            <file>${LOGS_DIR:-./logs}/jdbc-sqltiming.${threadName}.out</file>
  -            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  -               <!-- rollover daily -->
  -               <fileNamePattern>${LOGS_DIR:-./logs}/jdbc-sqltiming-%d{yyyy-MM-dd}.%i.${threadName}.out.gz</fileNamePattern>
  -               <maxHistory>3</maxHistory>
  -               <cleanHistoryOnStart>true</cleanHistoryOnStart>
  -               <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  -                  <!-- or whenever the file size reaches 100MB -->
  -                  <maxFileSize>100MB</maxFileSize>
  -               </timeBasedFileNamingAndTriggeringPolicy>
  -            </rollingPolicy>
  -            <encoder>
  -               <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ", UTC} lvl='%level', log='%logger{0}', th='%thread', xff='%X{req.xForwardedFor}', rId='%X{req.requestId}', tok='%X{kb.userToken}', aRId='%X{kb.accountRecordId}', tRId='%X{kb.tenantRecordId}', %maskedMsg%n</pattern>
  -            </encoder>
  -         </appender>
  -      </sift>
  -   </appender>
  -   <appender name="SIFT-jdbc-audit" class="ch.qos.logback.classic.sift.SiftingAppender">
  -      <discriminator class="org.killbill.billing.server.log.ThreadNameBasedDiscriminator" />
  -      <sift>
  -         <appender name="jdbc-audit-${threadName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
  -            <file>${LOGS_DIR:-./logs}/jdbc-audit.${threadName}.out</file>
  -            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  -               <!-- rollover daily -->
  -               <fileNamePattern>${LOGS_DIR:-./logs}/jdbc-audit-%d{yyyy-MM-dd}.%i.${threadName}.out.gz</fileNamePattern>
  -               <maxHistory>3</maxHistory>
  -               <cleanHistoryOnStart>true</cleanHistoryOnStart>
  -               <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  -                  <!-- or whenever the file size reaches 100MB -->
  -                  <maxFileSize>100MB</maxFileSize>
  -               </timeBasedFileNamingAndTriggeringPolicy>
  -            </rollingPolicy>
  -            <encoder>
  -               <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ", UTC} lvl='%level', log='%logger{0}', th='%thread', xff='%X{req.xForwardedFor}', rId='%X{req.requestId}', tok='%X{kb.userToken}', aRId='%X{kb.accountRecordId}', tRId='%X{kb.tenantRecordId}', %maskedMsg%n</pattern>
  -            </encoder>
  -         </appender>
  -      </sift>
  -   </appender>
  -   <appender name="SIFT-jdbc-resultset" class="ch.qos.logback.classic.sift.SiftingAppender">
  -      <discriminator class="org.killbill.billing.server.log.ThreadNameBasedDiscriminator" />
  -      <sift>
  -         <appender name="jdbc-resultset-${threadName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
  -            <file>${LOGS_DIR:-./logs}/jdbc-resultset.${threadName}.out</file>
  -            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  -               <!-- rollover daily -->
  -               <fileNamePattern>${LOGS_DIR:-./logs}/jdbc-resultset-%d{yyyy-MM-dd}.%i.${threadName}.out.gz</fileNamePattern>
  -               <maxHistory>3</maxHistory>
  -               <cleanHistoryOnStart>true</cleanHistoryOnStart>
  -               <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  -                  <!-- or whenever the file size reaches 100MB -->
  -                  <maxFileSize>100MB</maxFileSize>
  -               </timeBasedFileNamingAndTriggeringPolicy>
  -            </rollingPolicy>
  -            <encoder>
  -               <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ", UTC} lvl='%level', log='%logger{0}', th='%thread', xff='%X{req.xForwardedFor}', rId='%X{req.requestId}', tok='%X{kb.userToken}', aRId='%X{kb.accountRecordId}', tRId='%X{kb.tenantRecordId}', %maskedMsg%n</pattern>
  -            </encoder>
  -         </appender>
  -      </sift>
  -   </appender>
  -   <appender name="SIFT-jdbc-resultsettable" class="ch.qos.logback.classic.sift.SiftingAppender">
  -      <discriminator class="org.killbill.billing.server.log.ThreadNameBasedDiscriminator" />
  -      <sift>
  -         <appender name="jdbc-resultsettable-${threadName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
  -            <file>${LOGS_DIR:-./logs}/jdbc-resultsettable.${threadName}.out</file>
  -            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  -               <!-- rollover daily -->
  -               <fileNamePattern>${LOGS_DIR:-./logs}/jdbc-resultsettable-%d{yyyy-MM-dd}.%i.${threadName}.out.gz</fileNamePattern>
  -               <maxHistory>3</maxHistory>
  -               <cleanHistoryOnStart>true</cleanHistoryOnStart>
  -               <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  -                  <!-- or whenever the file size reaches 100MB -->
  -                  <maxFileSize>100MB</maxFileSize>
  -               </timeBasedFileNamingAndTriggeringPolicy>
  -            </rollingPolicy>
  -            <encoder>
  -               <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ", UTC} lvl='%level', log='%logger{0}', th='%thread', xff='%X{req.xForwardedFor}', rId='%X{req.requestId}', tok='%X{kb.userToken}', aRId='%X{kb.accountRecordId}', tRId='%X{kb.tenantRecordId}', %maskedMsg%n</pattern>
  -            </encoder>
  -         </appender>
  -      </sift>
  -   </appender>
  -   <appender name="SIFT-jdbc-connection" class="ch.qos.logback.classic.sift.SiftingAppender">
  -      <discriminator class="org.killbill.billing.server.log.ThreadNameBasedDiscriminator" />
  -      <sift>
  -         <appender name="jdbc-connection-${threadName}" class="ch.qos.logback.core.rolling.RollingFileAppender">
  -            <file>${LOGS_DIR:-./logs}/jdbc-connection.${threadName}.out</file>
  -            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  -               <!-- rollover daily -->
  -               <fileNamePattern>${LOGS_DIR:-./logs}/jdbc-connection-%d{yyyy-MM-dd}.%i.${threadName}.out.gz</fileNamePattern>
  -               <maxHistory>3</maxHistory>
  -               <cleanHistoryOnStart>true</cleanHistoryOnStart>
  -               <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  -                  <!-- or whenever the file size reaches 100MB -->
  -                  <maxFileSize>100MB</maxFileSize>
  -               </timeBasedFileNamingAndTriggeringPolicy>
  -            </rollingPolicy>
  -            <encoder>
  -               <pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSZ", UTC} lvl='%level', log='%logger{0}', th='%thread', xff='%X{req.xForwardedFor}', rId='%X{req.requestId}', tok='%X{kb.userToken}', aRId='%X{kb.accountRecordId}', tRId='%X{kb.tenantRecordId}', %maskedMsg%n</pattern>
  -            </encoder>
  -         </appender>
  -      </sift>
  -   </appender>
  -   <!-- Logs only SQL. SQL executed within a prepared statement is automatically shown with it's bind arguments replaced with the data bound at that position, for greatly increased readability. -->
  -   <logger name="jdbc.sqlonly" level="OFF" additivity="false">
  -      <appender-ref ref="SIFT-jdbc-sqlonly" />
  -   </logger>
  -   <!-- Logs the SQL, post-execution, including timing statistics on how long the SQL took to execute. -->
  -   <logger name="jdbc.sqltiming" level="OFF" additivity="false">
  -      <appender-ref ref="SIFT-jdbc-sqltiming" />
  -   </logger>
  -   <!-- Logs ALL JDBC calls except for ResultSets. This is a very voluminous output, and is not normally needed unless tracking down a specific JDBC problem. -->
  -   <logger name="jdbc.audit" level="OFF" additivity="false">
  -      <appender-ref ref="SIFT-jdbc-audit" />
  -   </logger>
  -   <!-- Even more voluminous, because all calls to ResultSet objects are logged. -->
  -   <logger name="jdbc.resultset" level="OFF" additivity="false">
  -      <appender-ref ref="SIFT-jdbc-resultset" />
  -   </logger>
  -   <!-- Log the jdbc results as a table. Level debug will fill in unread values in the result set. -->
  -   <logger name="jdbc.resultsettable" level="OFF" additivity="false">
  -      <appender-ref ref="SIFT-jdbc-resultsettable" />
  -   </logger>
  -   <!-- Logs connection open and close events as well as dumping all open connection numbers. This is very useful for hunting down connection leak problems. -->
  -   <logger name="jdbc.connection" level="OFF" additivity="false">
  -      <appender-ref ref="SIFT-jdbc-connection" />
  -   </logger>
  -   <!-- See https://github.com/jOOQ/jOOQ/issues/4019 -->
  -   <logger name="org.jooq.Constants" level="OFF" />
  -   <!-- Silence verbose loggers in DEBUG mode -->
  -   <logger name="com.dmurph" level="OFF" />
  -   <logger name="org.eclipse" level="INFO" />
  -   <logger name="org.killbill.billing.server.updatechecker" level="INFO" />
  -   <!-- Useful loggers for debugging -->
  -   <logger name="org.killbill.billing.jaxrs.resources" level="INFO" />
  -   <logger name="org.killbill.notificationq" level="INFO" />
  -   <logger name="org.killbill.queue" level="INFO" />
  +   <logger name="jdbc" level="OFF" />
      <root level="INFO">
         <appender-ref ref="MAIN" />
      </root>
  
positive.code: 
      create database killbill;
     
  
  . Run the Kill Bill DDL https://docs.killbill.io/latest/ddl.sql[here].
  
  . You should have a database called *killbill*  with the following tables:
  
  
negative.code:    </pluginExecutions>
  </lifecycleMappingMetadata>
  
  . Go to `Window > Preferences > Maven > Lifecycle Mappings`.Click *Browse* and select the path of the `lifecycle-mapping-metadata.xml` file. Click `Apply and Close`
  
  . Build the project again (In Project Explorer, `Right click on killbill > Maven > Update Project > OK`)
  
  . This will get rid of all the build errors. Your Eclipse workspace should look like this:image:https://github.com/killbill/killbill-docs/raw/v3/userguide/assets/img/development/eclipse_workspace.png[align=center]
  
  