Custom taxonomy rewrite using tax name instead of rewrite slug

You have the rewrite argument defined inside the $labels array, move it out to the $args array:

$args = array(
    'labels' => $labels,
    'hierarchical' => true,
    'rewrite' => array('slug' => 'projects', 'with_front' => true)
);